лучший способ построить граф для транспортного потока MPEG2

в Windows 7 проигрыватель Windows Media очень хорошо поддерживает файлы .ts в том смысле, что проигрыватель Windows Media знает, как обрабатывать такие файлы без каких-либо дополнительных пакетов кодеков.

однако, если я попытаюсь использовать graphedit для «рендеринга» файла .ts, он жалуется, что не знает, как построить для него график.

какой метод использует проигрыватель Windows Media для демультиплексирования/декодирования этих файлов? это директ-шоу? основа Windows Media? БДА? Технологии Microsoft TV? унифицированная модель тюнинга?

какой бы метод они ни использовали, доступен как API для использования в моем пользовательском приложении?


person Aviad Rozenhek    schedule 22.02.2011    source источник
comment
В Windows 7 проигрыватель Windows Media использует Media Foundation вместо DirectShow.   -  person Alan    schedule 25.02.2011
comment
Я серьезно отнесся к вашему комментарию и использовал приложение TOPOedit медиафонда, чтобы попытаться отобразить мой файл .ts. он просто сказал, что формат байта файла несовместим ... так как же это делает медиаплеер?   -  person Aviad Rozenhek    schedule 27.02.2011


Ответы (2)


В DirectShow, использующем только фильтры Microsoft, может возникнуть некоторая путаница. Демультиплексор Mpeg2 необходимо настроить вручную с помощью кода, используя IMpeg2Demultiplexer или через страницы свойств, чтобы добавить выходные контакты для потоков контента. Обычно вам нужно будет подключить что-то еще к фильтру, чтобы проанализировать информацию PSI/PAT и идентифицировать идентификаторы программ потоков контента внутри транспортного потока. Microsoft предоставляет пример SDK для выполнения это в SDK платформы Windows.

Предполагается, что у вас есть обычный файл транспортного потока mpeg2. Вы можете использовать бесплатные приложения MediaInfo или TsReader Lite, чтобы точно увидеть, что находится в вашем ts-файле.

Существуют фильтры сторонних производителей, которые значительно упрощают работу с транспортными потоками в DirectShow. Комбинация фильтров с открытым исходным кодом Haali Media Splitter и Ffdshow сделает это без дополнительной настройки. Или коммерческие пакеты фильтров от MainConcept, Elecard, LEADTools и т.д.

Я мало работал с Media Foundation, поэтому у меня нет особых советов по этому поводу. Более новые версии проигрывателя Windows Media используют MF вместо DirectShow. Некоторые, но не все, новые функции MF также доступны через интерфейсы DirectShow.

person Alan    schedule 27.02.2011
comment
хороший ответ, но мне все еще интересно, как MS делает это в проигрывателе Windows Media - person Aviad Rozenhek; 28.02.2011
comment
Как я уже сказал, они используют что-то через Media Foundation вместо DirectShow. - person Alan; 01.03.2011

Я не уверен в методе, используемом проигрывателем Windows Media.

Я использовал DirectShow для построения графика. Из источника вы можете добавить демультиплексор MPEG-2, создать выводы аудио и видео (используя интерфейс IMpeg2Demultiplexer), затем подключить вывод аудио к «Microsoft DTV-DVD Audio Decoder», а вывод видео к «Microsoft DTV». -DVD-видеодекодер". Затем вы можете передать выходные данные в аудио- и видеорендерер.

Например, вот часть графика, который я использовал: Render Graph

Дэйвид

person David Paxson    schedule 24.02.2011
comment
какое приложение вы использовали для отображения графика? это не похоже на graphedit или на graphstudio radscorpion? поддерживает ли он интерфейс IMpeg2Demultiplexer или вам нужно использовать этот интерфейс в пользовательском приложении? - person Aviad Rozenhek; 27.02.2011
comment
Это из GraphEditPlus. Он не поддерживает напрямую IMpeg2Demultiplexer, но вы можете открыть окно свойств фильтра и установить элементы в диалоговом окне свойств. GraphEditPlus также может генерировать код C# или C++ из графа, но вам придется добавить код для использования IMpeg2Demultiplexer вручную, поскольку он не знает об этом. - person David Paxson; 02.03.2011