Загрузите видеофайл и выберите отдельные кадры

Мы разрабатываем приложение для захвата видеофайлов в различных форматах, выполнения простого редактирования файлов и вывода их в определенном формате.

Я могу обрабатывать все, кроме части редактирования через FFMPEG, так как редактирование требует, чтобы пользователь указал определенные вещи. Мне нужно, чтобы пользователь указал любые диапазоны кадров, которые необходимо обрезать (только с начала или конца, а не с середины), номера начальных/конечных кадров для постепенного увеличения или уменьшения и наложения текста.

Я видел как Splicer, так и обертки Directshow.NET, но я не уверен, что стоит тратить время на то, чтобы перенести все редактирование в наше приложение, а не просто использовать avisynth/ffmpeg/mencoder для фактического редактирования после того, как пользователь устанавливает все вышеперечисленное.

Все, что мне действительно нужно, - это элемент управления или оболочка, чтобы я мог создать элемент управления, который будет воспроизводить/приостанавливать видео, перемещаться между кадрами и позволять мне захватывать этот конкретный номер кадра видео. Я могу сгенерировать файлы AVS из этого, чтобы сделать все остальное. Было бы хорошо, если бы он использовал DirectShow на каком-то уровне, чтобы любые кодеки, установленные на машине, были доступны, так как видео могут быть в форматах WMV, FLV, Divx, MP4 и т. д., и нам нужно поддерживать все из тех.

Будут рассмотрены любые идеи и предложения, но мы стремимся к максимально быстрой реализации (написание кода, а не исполнение).


person Matt    schedule 08.10.2010    source источник


Ответы (1)


Что мы в итоге сделали:

Мы использовали элемент управления ActiveX проигрывателя Windows Media, чтобы позволить пользователю выбирать точки в видео для настройки затухания и обрезки. Затем мы генерируем из этого скрипт Avisynth и запускаем его через mencoder, чтобы получить окончательное видео.

Мы остановились на использовании свойства double из элемента управления WMP, которое указывает currentPosition в воспроизводимом клипе. Этого было достаточно, чтобы сгенерировать номер кадра из кадров клипа в секунду и currentPosition для использования в скрипте AviSynth.

person Matt    schedule 12.10.2010
comment
Ну, как оказалось, что-то не так точно, как должно быть. Я предполагаю, что свойство currentPosition элемента управления WMP не совсем точное, чем дальше мы находимся в файле, тем больше номера кадров отличаются от фактических, как сообщает AviSynth. - person Matt; 18.10.2010