Объединение 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, Полевое (разделенное) Видео: НЕТ, Четность: Сначала поле снизу, Шаг видео: 320 байт, Аудио: НЕТ, Обнаружен ЦП: x87 MMX ISSE SSE4.1 SSSE3
1 ответ
Я смог воспроизвести вашу проблему. По-видимому, AviSource выбирает неправильный формат пикселей по умолчанию, он должен быть "RGB24" вместо "YV24".
Для решения этой проблемы необходимо добавить параметр pixel_type="RGB24"
на каждый вызов AviSource, например так:
AVISource("Event20150423075842001.avi", pixel_type="RGB24")
В качестве альтернативы вы можете попробовать использовать DirectShowSource вместо AviSource, он сразу же работал правильно для меня.