Что нового

Создание, старт DirectShow графа из неск. фильтров. Самый быстрый транскод в MKV

PopovN

Новичок
Сообщения
2
Репутация
0
Версия AutoIt: 3.3.6.1
Описание:
Ищется решение:
1.1) Составить граф (соединить пины в известном порядке) из фильтров с известными названиями и CLSID-ами(см пример графа ниже)
1.2) Запустить Граф

Точно не требуется:
2.0) интерфейса
2.1) отслеживать и изменять настройки фильтров
2.2) контролировать видео и аудио выводы

Для чего это необходимо
Создание самого быстрого транскодера в MKV контейнер
При "перекодировании" видеофайлов обычно использут схему:
Источник->промежуточный перекодированыый файл видео+промежуточный перекодированый файл аудио->Результат
Посредством DirectShow фильтров схема может выглядеть как:
Источник->Результат
При этом экономя время на перегонке файлов по дисковой подсистеме, более равномерно загружая процессор.
Данная экономия особенно заметна при частичном транскодинге - если не устраивает только аудио:
текущая реализация идеи тратит 10 минут вместо 25 по сравнению со StaxRip при транскодинге 100минут/5ГБ HD-video(перегонка звука в wav-PCM и создание MKV контейнера).
Плюсы для использования при полном транскодинге неочевидны, но при реализации пунктов 2.0-2.2 появится удобство пользования.

Как это реализовано сейчас
3.1) Генерирую файл, описывающий будущий граф
Код:
<GRAPH version="1.0">
	<FILTER ID="File_writer" clsid="{8596E5F0-0DA5-11D0-BD21-00A0C911CE86}">
		<PARAM name="src" value="X:\OUT.mkv"/>
	</FILTER>
	<FILTER ID="SolveigMM_Matroska_Muxer" clsid="{E4B7FAF9-9CFF-4FD5-AC16-0F250F5F97B7}">
	</FILTER>
	<FILTER ID="AC3Filter" clsid="{A753A1EC-973E-4718-AF8E-A3F554D45C44}">
	</FILTER>
	<FILTER ID="Haali_matroska_splitter" clsid="{55DA30FC-F16B-49FC-BAA5-AE59FC65F82D}">
		<PARAM name="src" value="X:\IN.mkv"/>
	</FILTER>
	<connect direct="yes" src="Haali_matroska_splitter" srcpin="Video" dest="SolveigMM_Matroska_Muxer" destpin="In 0"/>
	<connect direct="yes" src="Haali_matroska_splitter" srcpin="Audio" dest="AC3Filter" destpin="In"/>
	<connect direct="yes" src="AC3Filter" srcpin="Out" dest="SolveigMM_Matroska_Muxer" destpin="In 1"/>
	<connect direct="yes" src="SolveigMM_Matroska_Muxer" srcpin="Out" dest="File_writer" destpin="in"/>
</GRAPH>
3.2) Запускаю "graphedit.exe option.xgr"
3.3) Жму ентер, сворачиваю окошко

Что есть в AutoIt по DirectShow
http://www.autoitscript.com/forum/topic/97487-directshow-udf/
Используеется, но совсем не описан процесс создания графа - берется по умолчанию из системы
http://www.autoitscript.com/forum/topic/121555-directshow-player/
используется AutoItObject, и вижу что механизм выбора фильтра предусмотрен, но полное отсутствие документации сводит к нулю понимание, как и что делать.

Что возможно в будущем
4.1) Создание базы стыкующихся фильтров и как следствие транскодер из всего во все(что есть для DirectShow) за минимальное время.
4.2) Контроль настроек и пинов фильтров и как следствие работа с несколькими источниками и/или несколькими потоками одного вида (две аудиодорожки например) и подстройка кодека автоматически, исходя из каких-либо условий.
 
Верх