Объединение 3 файлов gmp4 с использованием Avisynth и VirtualDub приводит к неправильным цветам и искаженным файлам.

Мне нужно выполнить, казалось бы, простую задачу по укладке 3 файлов рядом друг с другом. Они все одинаковые: .avi Container, 320x240, 4:3, 25 кадров в секунду, кодек GeoVision Advanced MPEG-4 GEO. Я установил кодек GeoVision (http://www.geovision.com.tw/english/5_8.asp# — выберите «другие утилиты»), чтобы моя система (Windows Media Player, Media Player Classic) могла воспроизводить файлы. Также я могу открывать и работать с ними в Virtual Dub. Я установил AviSynth и написал простой скрипт для их укладки рядом друг с другом.

h1 = AVISource("Event20150423075842001.avi")

h2 = AVISource("Event20150423075842002.avi")

h3 = AVISource("Event20150423075848003.avi")

StackHorizontal(h1, h2, h3)

теперь, когда я сохраняю его как .avs, а затем открываю его с помощью VirtualDub, я вижу три видео, красиво расположенных рядом друг с другом, но цвета странные, а части видео перевернуты, и все просто ... неправильно - см. Скриншот http://www.linkfile.de/download-46f71057ed130f9be29510f68ce4ee71.php. Сначала я подумал, что это как-то связано с тем, что avisynth использует неправильный кодек, поэтому я заставил его использовать gmp4 (как вы также можете видеть на скриншоте), но результат тот же. Теперь у меня также установлен Avisynth+ и VirtualDubMod. Когда я открываю .avs в VDMod, я получаю «не удалось найти декомпрессор для формата YV24», но он все равно открывает видео, которое выглядит немного лучше (но когда я делаю прямую потоковую копию и сохраните его, затем воспроизведите его в MPC, он выглядит точно так же, как на первом скриншоте). Итак, эта ошибка указывает мне на что-то, связанное с цветовым пространством. Теперь мои вопросы:

  • Как я могу узнать, в каком формате мои файлы? ЮВ24, ЮВ12,..?
  • И затем, как я могу указать Avisynth использовать формат, с которым может работать VirtualDubMod?
  • Или как заставить VirtualDub работать с YUV24? Мне просто не хватает кодека? Находится ли мой ход мыслей хоть немного в правильном направлении, или моя проблема совсем в другом?

Я также нашел этот связанный поток: Редактирование/декодирование файлов AVI с использованием системы -установлены проприетарные кодеки, но с помощью avisynth и ffmpeg я получаю такие же результаты, как и с VirtualDub.

Я не могу использовать решение сначала преобразовать все мои файлы, а затем выполнить стек на втором этапе, потому что фактические файлы, с которыми мне приходится работать, составляют около 180 видео, каждое из которых длится около 8 часов, и время, которое они потребляют, будет стоять в никакого отношения к моим возможностям..

Я действительно искал решения на прошлой неделе, и я думаю, что близок к этому, но, к сожалению, я просто недостаточно знаю о программировании, чтобы решить его самостоятельно ... поэтому я также хочу извинить за любые очевидные глупости в моем объяснении;) я очень благодарен за любую помощь

Всем хорошо провести время

РЕДАКТИРОВАТЬ: Итак, у меня есть еще немного информации и пример файла, на который я не могу ссылаться в этом посте, потому что у меня снова недостаточно репутации, очень приятно. Постараюсь комментировать и выкладывать ссылки :)

Вот что мне принесла команда info(): Цветовое пространство: YV24, FieldBased (Separated) Video: NO, Parity: Bottom Field First, Video Pitch: 320 байт, Audio: NO, CPU обнаружен: x87 MMX ISSE SSE4.1 SSSE3


person Far    schedule 20.06.2015    source источник
comment
Без скриншотов или примеров файлов в этом специальном формате сложно что-либо сказать. Я даже не смог закодировать файлы в этот формат после установки кодека. Чтобы получить информацию о цветовом пространстве и другие детали, вы можете использовать команду Info() в Avisynth после AviSource. Вы также можете попробовать поставить ConvertToYV12() после каждого AviSource, чтобы функция стекера получала видео в более стандартном цветовом пространстве.   -  person Seedmanc    schedule 20.06.2015
comment
спасибо, я добавил некоторую информацию в свой пост здесь пример файла: php А вот результаты инфо-команды: linkfile.de/download-8122ecf0e8a3dfbbd36d13b64aa30796 .php, когда я конвертирую их в YV12, они все равно выглядят одинаково при воспроизведении, проблема остается   -  person Far    schedule 22.06.2015


Ответы (1)


Я смог воспроизвести вашу проблему. По-видимому, AviSource по умолчанию выбирает неправильный формат пикселей, он должен быть «RGB24» вместо «YV24».

Чтобы решить эту проблему, вам нужно добавить параметр pixel_type="RGB24" к каждому вызову AviSource, например:

AVISource("Event20150423075842001.avi", pixel_type="RGB24")

В качестве альтернативы вы можете попробовать использовать DirectShowSource вместо AviSource, у меня это сразу сработало.

person Seedmanc    schedule 22.06.2015