Способен ли DirectShow вырезать некоторые части видео?

У меня нет опыта работы с API обработки видео, и мне трудно найти ответ на этот вопрос. Моя цель - создать программу, способную создавать видео из выбранных частей выбранного файла. Я не смог найти ответ, может ли DirectShow удалить некоторые части видео или вырезать некоторые части, чтобы объединить их в новое, более короткое видео.


person user3146472    schedule 19.03.2014    source источник


Ответы (2)


Услуги редактирования DirectShow (DES) — это именно то, о чем вы спрашиваете. По сути, это движок Windows Movie Maker, и он был частью DirectShow, начиная с DirectX 8. Там вы можете создать временную шкалу с одной или несколькими видео- и аудиодорожками, поместить туда части одного или разных файлов, а затем либо воспроизвести, либо преобразовать их в файл. Он даже поддерживает рендеринг без повторного сжатия для некоторых форматов. DES был доступен в течение многих лет, но сейчас считается устаревшим.

В чистом DirectShow по-прежнему возможно использовать интерфейс IMediaSeeking на соответствующих выходных контактах для поиска желаемой начальной точки и обработки нужных частей файлов.

person Dee Mon    schedule 20.03.2014

Насколько я знаю, DirectShow не может сделать это из коробки. Похоже, вы разрабатываете приложение для редактирования видео. Во-первых, вы должны разработать проигрыватель, который позволит воспроизводить от-до (в единицах времени или кадра) и воспроизводить кадр за кадром. С таким плеером пользователь сможет выбирать фрагменты по своему выбору. Одним из способов сделать это было бы разработать часть декодирования с DShow или без него и часть рендеринга с DShow, потому что это проще. Часть рендеринга, вероятно, потребует пользовательского исходного фильтра, подключенного к аудио и/или видео рендереру. Такой пользовательский исходный фильтр должен иметь собственный интерфейс для настройки и получения несжатых данных. Часть декодирования должна иметь ранее упомянутые функции для воспроизведения фрагментов и пошагового покадрового воспроизведения, чтобы вы могли управлять воспроизведением и обеспечивать выбор фрагментов файла с точностью до кадра (для последующего экспорта в один файл).

Вторая часть приложения предназначена для создания нового видеофайла из выбранных фрагментов. У вас есть 2 варианта здесь. Вы можете перекодировать все эти фрагменты. Сделав это, вы потеряете качество. Кроме того, вам придется сначала настроить кодировщик, сообщив ему, что является входным и выходным форматом. В зависимости от выбранного кодировщика это может быть тривиальным или довольно сложным. Второй вариант — создать новое видео из сжатых образцов. Здесь вам нужно будет обратить внимание, чтобы такой файл запускался с ключевого кадра (для видеопотока). Также вам понадобится сторонний SDK для такой задачи, или вы можете сделать это вручную, если вы знакомы с получившейся архитектурой формата контейнера. Например, Windows Media Format SDK предоставляет способ сделать это, если исходным форматом является файл ASF/WMV. Если нет, что касается видео, вам придется как-то это решить.

ЕСЛИ вы собираетесь это сделать, приготовьтесь к значительному объему кодирования.

person Community    schedule 19.03.2014
comment
Спасибо за ваш ответ. Самая большая проблема в том, что я никогда даже не работал с библиотеками для обработки видео. Во-вторых, мне нужно сделать это с помощью C #, поэтому лучше использовать обертки, поскольку все доступные некоммерческие библиотеки - это библиотеки C ++. Вся тема ATM для меня довольно абстрактна, я даже не знаю, с чего начать. Я знал о части игрока, но я думал, что найти правильную библиотеку, способную вырезать, важнее. Вот почему я решил сначала спросить о возможностях DirectShow. - person user3146472; 19.03.2014
comment
C++ намного лучше подходит для низкоуровневой обработки аудио/видео. Также для написания фильтров DirectShow. Вы можете использовать C# для объединения всего этого и пользовательского интерфейса. Остерегайтесь некоммерческих библиотек C++. Авторы таких библиотек очень часто меняют интерфейс. В результате у вас будут серьезные проблемы при переходе на более новую версию. DirectShow, безусловно, поможет вам в этом, но вам придется дополнительно кодировать. Кроме того, имейте в виду, что MS планирует отказаться от DirectShow. Crappy Media Foundation является заменой. (По крайней мере, так должно было быть) - person ; 19.03.2014
comment
И какая самая большая разница между MF и DS на данный момент? Кроме того, что Microsoft отказывается от DS и поддерживает Media Foundation в качестве замены? - person user3146472; 19.03.2014
comment
MF по-прежнему содержит много ошибок. Например, вы не можете написать какое-то сложное приложение для воспроизведения со всем, что предлагает MF, потому что некоторые вещи все еще сломаны. У меня также были контакты с MS по этому поводу, и о некоторых вещах они сказали, что понятия не имеют, о некоторых других вещах они подтвердили ошибки в своем коде и т. д. ИМХО, большая проблема - очень плохая документация. Есть еще книга MF, но автор (Антон Полинджер) просто напечатал то, что есть в MSDN, не более того. Вообще, с моей точки зрения, архитектура MF очень плоха. - person ; 20.03.2014