DirectShowSource() использует кодеки, установленные и включенные в настоящий момент для определенного типа файлов. в вашей системе. Обычно это означает те же кодеки, которые запускаются при открытии этого видеофайла в медиаплеере, включая аудиопоток. Если у вас включены некоторые специальные параметры постобработки, они также будут действовать.
FFmpegSource2(), как вы упомянули, не зависит от системы кодеки и вместо этого использует FFMPEG. По умолчанию он также игнорирует звук, даже если он присутствует в исходном контейнере.
Заметным отличием является то, что DirectShowSource() не имеет поиска с точностью до кадра, что становится критичным, если вы пытаетесь выполнить обрезку с точностью до кадра или, скажем, смешать две записи одного и того же события, чтобы каждый кадр совпадал. . FFMPEG имеет возможность генерировать файлы .ffindex для улучшения возможностей поиска (по умолчанию она включена).
Однако, по моему опыту, при открытии некоторых чересстрочных потоков HDTV, закодированных в H264, FFmpegSource2 создает двойную частоту кадров, поэтому вам, возможно, придется следить за этим.
Существует также внешний подключаемый модуль с именем DSS2, исправляющий неточный выпуск оригинала.
Лично я обычно использую DirectShow/DSS2, если мне не нужен поиск с точностью до кадра, поскольку FFMS может занять некоторое время для индексации при первом запуске.
person
Seedmanc
schedule
18.01.2018