Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
[Функция, связанная с этой страницей, DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngineи захват аудио/видео в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать новый код MediaPlayer, IMFMediaEngine и аудио-видеозахват в Media Foundation вместо DirectShowпо возможности. Корпорация Майкрософт предлагает, что существующий код, использующий устаревшие API, будет перезаписан для использования новых API, если это возможно.]
Когда MPEG-2 demux получает пакет данных, он должен определить, какой выходной контакт должен анализировать и доставлять данные. В режиме потоковой передачи программы демультиплексор сопоставляет идентификаторы потоков с выходными контактами. В режиме транспортного потока идентификаторы потоков сопоставляются с выходными контактами. Например, в режиме транспортного потока, если PID 0x31 закреплён за пином 0, то каждый пакет с этим номером PID направляется в выходной пин 0. Если демультиплексор получает пакет, идентификатор потока или PID которого не сопоставлены с каким-либо выходным штырем, он просто удаляет пакет.
В режиме запросов демультиплексор автоматически создает выходные штырьки для аудио- и видеопотоков в файле и сопоставляет идентификаторы потоков с этими штырьками.
В режиме принудительной отправки выходные выводы должны быть настроены приложением или другим фильтром. Для источников цифрового телевидения с помощью архитектуры драйвера трансляции (BDA) фильтр поставщика сети работает с фильтром TIF для настройки демюкса. Приложению не нужно ничего делать. В других сценариях приложение должно настроить выходные контакты.
Демультиплексор начинается без выходных контактов. Чтобы создать выходной пин-код, вызовите метод IMpeg2Demultiplexer::CreateOutputPin в фильтре. Этот метод принимает тип носителя и имя пин-кода и возвращает указатель IPin. Тип носителя используется при подключении контакта к другому фильтру, как правило, декодеру. Пример приведен в разделе Использование Demux с элементарными потоками. Имя пин-кода может быть любым, что вам нравится, за исключением того, что повторяющиеся имена пин-кодов запрещены.
Затем назначьте один или несколько идентификаторов потоков или PID новому выходному контакту. Для программных потоков запросите пин для IMPEG2StreamIdMap и вызовите IMPEG2StreamIdMap::MapStreamId. Для транспортных потоков запросите пин-код для IMPEG2PIDMap и вызовите IMPEG2PIDMap::MapPID.
Существует несколько способов, которыми демультиплексор может выполнять синтаксический анализ пакетов TS. Для каждого выходного пина метод анализа определяется параметром MediaSampleContent для метода MapPID.
| Ценность | Описание |
|---|---|
| МЕДИА_ЭЛЕМЕНТАРНЫЙ_ПОТОК | Фильтр передает полезную нагрузку PES. В этом режиме фильтр депакетирует пакеты PES, поэтому следующий фильтр получает поток байтов ES без заголовков пакетов PES. (Только аудио- и видеопотоки.) |
| MEDIA_MPEG2_PSI | Фильтр предоставляет полные разделы PSI, такие как таблицы PAT, таблицы PMT, таблицы CAT и т. д. |
| ПЕРЕНОС_МЕДИА_ДАННЫХ | Фильтр извлекает полезные данные из пакетов TS и доставляет их без дальнейшего анализа. Для простых потоков это означает, что demux будет доставлять целые пакеты PES, включая заголовки пакетов PES. |
| пакет передачи медиа | Фильтр предоставляет целые пакеты TS. Demux направляет пакеты TS в соответствии с их идентификаторами PID, но не проверяет и не обрабатывает пакеты. Пакеты с ошибками не отфильтровываются. Demux не повторно мультиплексирует пакеты, а результирующий выходной поток не соответствует потоку транспорта MPEG-2. Этот режим называется проходить через режим. |
Для потоков программ демукс всегда передает полезную нагрузку PES.
Связанные разделы