Отправка данных ASF в точку публикации
Функция, связанная с этой страницей, SDK Windows Media Format 11, является устаревшей функцией. Он был заменен ридером источника и записью в приемник. средства чтения источников и записи приемника оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать новый код средства чтения исходных данных и средства записи приемников вместо пакета SDK для Windows Media 11, когда это возможно. Корпорация Майкрософт предлагает, что существующий код, использующий устаревшие API, будет перезаписан для использования новых API, если это возможно.]
Пакет SDK формата Windows Media можно использовать для отправки данных ASF в точку публикации на сервере Windows Media. Затем сервер передает данные из этой точки публикации. Этот сценарий полезен при захвате или повторном кодировании содержимого на одном компьютере и желании распространять содержимое с другого компьютера (или нескольких компьютеров). Также полезно, если необходимо переместить содержимое с компьютера внутри брандмауэра на сервер Windows Media за пределами брандмауэра, так как распространение push-уведомлений использует протокол HTTP.
Заметка
Точка публикации фактически действует как перенаправитель. Клиент указывает точку публикации в URL-адресе (например, mms://MyServer/MyPublishingPoint), а сервер преобразует его в запрос на содержимое.
Чтобы отправить данные в точку публикации, подключите объект приемника push-уведомлений к объекту записи. Приемник push-уведомлений используется для открытия подключения к серверу и управления сеансом отправки. Объект записи обрабатывает все остальные аспекты создания файла.
Выполните следующие действия.
- Создайте объект записи, вызвав функциюWMCreateWriter, которая возвращает указатель IWMWriter.
- Создайте объект приемника push-уведомлений, вызвав функцию WMCreateWriterPushSink, которая возвращает указатель IWMWriterPushSink.
- Подключите сетевой приемник к записи путем вызова IWMWriterAdvanced::AddSink записи с указателем на сетевого приемника IWMWriterPushSink.
- Подключитесь к серверу, вызвав IWMWriterPushSink::Connect.
- Запишите поток. Этот шаг включает настройку профиля для объекта записи, отправку примеров объекту записи и, возможно, выполнение других задач. Дополнительные сведения см. в записи файлов ASF. Дополнительные задачи могут включать настройку атрибутов метаданных (как описано в работе с метаданными) или настройку live-DRM в потоке (как описано в по включению поддержки DRM). Эти задачи выполняются точно так же, как и для записи файлов ASF.
- После завершения написания вызовите IWMWriterAdvanced::RemoveSink на записывающем устройстве, чтобы отключить объект для приема push-уведомлений.
- Вызов IWMWriterPushSink::EndSession в приемнике push-уведомлений, чтобы завершить сеанс с сервером.
Эти шаги показаны в примере приложения WMVNetWrite.
Заметка
Если вы отправляете файл, содержащий только видео с очень низким битрейтом, он может начать воспроизводиться на точке публикации только через несколько секунд. Это может произойти в различных случаях, например, когда один пакет содержит множество небольших видеокадров без звука, или когда между первым и вторым пакетом в видеофайле с низким битрейтом существует значительный временной разрыв. Чтобы избежать этой проблемы, вставьте в файл бесшумный аудиопоток.
Аутентификация
Проверка подлинности на сервере автоматически выполняется объектом обработчика push-уведомлений. Однако приложению может потребоваться предоставить учетные данные. Это делается через интерфейс обратного вызова IWMCredentialCallback, как показано ниже.
- Реализуйте интерфейсы IWMStatusCallback и IWMCredentialCallback в вашем приложении.
- Запросите объект-приемник push-данных для интерфейса IWMRegisterCallback.
- Вызовите IWMRegisterCallback::Подписка, передав указатель на интерфейс IWMStatusCallback в вашем приложении.
- Если приемник push-уведомлений должен получить учетные данные из приложения, он запрашивает указатель IWMStatusCallback для интерфейса IWMCredentialCallback и вызывает IWMCredentialCallback::AcquireCredentials. Сведения об этом методе см. в проверки подлинности.
- По завершении вызовите IWMRegisterCallback::Unadvise, чтобы остановить получение уведомлений о событиях из приемника push-уведомлений.
Связанные разделы