Поделиться через


Отправка данных ASF в точку публикации

[Функция, связанная с этой страницей, Windows Media Format 11 SDK, является устаревшей функцией. Она была заменена средствами чтения источника и модуля записи приемников. Средство чтения источника и модуль записи приемников оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать в новом коде средство чтения исходного кода и модуль записи приемников вместо пакета SDK для Windows Media Format 11, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, использующий устаревшие API, чтобы по возможности использовать новые API.]

Пакет SDK для формата Windows Media можно использовать для отправки данных ASF в точку публикации на сервере Windows Media. Затем сервер передает данные из этой точки публикации. Этот сценарий полезен, если вы собираете или повторно кодируют содержимое на одном компьютере и хотите распространить его с другого компьютера (или нескольких компьютеров). Это также полезно, если необходимо переместить содержимое с компьютера в брандмауэре на сервер Windows Media за пределами брандмауэра, так как принудительная рассылка использует протокол HTTP.

Примечание

Точка публикации действует, по сути, как перенаправление. Клиент указывает точку публикации в URL-адресе (например, mms://MyServer/MyPublishingPoint), а сервер преобразует ее в запрос содержимого.

 

Чтобы отправить данные в точку публикации, прикрепите объект приемника push-уведомлений к объекту записи. Приемник отправки используется для открытия подключения к серверу и управления сеансом отправки. Объект записи обрабатывает все остальные аспекты создания файла.

Выполните следующие действия:

  1. Создайте объект записи, вызвав функцию WMCreateWriter , которая возвращает указатель IWMWriter .
  2. Создайте объект приемника push-уведомлений, вызвав функцию WMCreateWriterPushSink , которая возвращает указатель IWMWriterPushSink .
  3. Подключите приемник сети к модулю записи, вызвав IWMWriterAdvanced::AddSink для модуля записи с указателем на интерфейс IWMWriterPushSink сетевого приемника.
  4. Подключитесь к серверу, вызвав IWMWriterPushSink::Connect.
  5. запись потока; Этот шаг включает настройку профиля в объекте записи, отправку примеров в модуль записи и, возможно, другие задачи. Дополнительные сведения см. в статье Запись ФАЙЛОВ ASF. Дополнительные задачи могут включать настройку атрибутов метаданных (как описано в разделе Работа с метаданными) или настройку live-DRM в потоке (как описано в разделе Включение поддержки DRM). Эти задачи выполняются точно так же, как и для записи файлов ASF.
  6. Завершив запись, вызовите IWMWriterAdvanced::RemoveSink для модуля записи, чтобы отсоединить объект приемника отправки.
  7. Вызовите IWMWriterPushSink::EndSession в приемнике push-уведомлений, чтобы завершить сеанс с сервером.

Эти шаги показаны в примере приложения WMVNetWrite.

Примечание

Если вы отправляете файл видео с очень низкой скоростью, он может не начать воспроизведение в точке публикации в течение нескольких секунд. Это может произойти в различных случаях, например, когда один пакет содержит много небольших видеокадров и не содержит звука, или если между первым пакетом и вторым пакетом в файле видео с низкой скоростью имеется длительный промежуток времени. Чтобы избежать этой проблемы, вставьте в файл автоматический аудиопоток.

 

Проверка подлинности

Проверка подлинности на сервере автоматически обрабатывается объектом приемника push-уведомлений. Однако приложению может потребоваться предоставить учетные данные. Это делается с помощью интерфейса обратного вызова IWMCredentialCallback следующим образом:

  1. Реализуйте интерфейс IWMStatusCallback и IWMCredentialCallback в приложении.
  2. Запрос объекта приемника отправки для интерфейса IWMRegisterCallback .
  3. Вызовите IWMRegisterCallback::Advise с указателем на интерфейс IWMStatusCallback приложения.
  4. Если приемнику push-уведомлений необходимо получить учетные данные из приложения, он запрашивает указатель IWMStatusCallback для интерфейса IWMCredentialCallback и вызывает IWMCredentialCallback::AcquireCredentials. Сведения об этом методе см. в разделе Проверка подлинности.
  5. По завершении вызовите IWMRegisterCallback::Unadvise , чтобы прекратить получение уведомлений о событиях из приемника push-уведомлений.

Отправка данных ASF по сети

Работа с приемниками модуля записи

Объект приемника push-уведомлений модуля записи