Двойной деинтерлейс с полным движением - ffmpeg + yadif 50i-50p 60i-60p

20157
moot

Я пытаюсь выяснить, как использовать yadif/ yadif-2xс ffmpeg для преобразования исходного материала 50i в вывод 50p, который сохраняет движение всех пятидесяти полей в секунду. Прямо сейчас я использую следующую команду, которая создает версию с двойным кадром, по сути, такую ​​же, как 25p.

ffmpeg -i input.m2t -f:v yadif=1 -c:v prores output.mov 

Использование yadif=0делает деинтерлейсированный файл 25p. Использование yadif=1делает деинтерлейсированный файл 50p с удвоенными кадрами 25p. Мне нужно создать деинтерлейсированный файл с 50 уникальными кадрами в секунду, и я вполне уверен, что это возможно. Это то, что должен делать yadif (2x)?

5
Пожалуйста, покажите свой полный вывод на консоль ffmpeg. LordNeckbeard 10 лет назад 1
Доступно здесь: http://pastebin.com/CqsD5D8L moot 10 лет назад 0
После долгих поисков я, возможно, нашел другой способ выполнить это преобразование. Я попробую этот метод завтра и сообщу результаты. http://hddv.net/showthread.php?2876-Format-conversion-%2850i-50p-24p-25p%29-tests moot 10 лет назад 0
`yadif = 1` работает у меня: вдвое больше кадров, и каждый отличается mark4o 10 лет назад 0
Я попробовал это снова сегодня, и, к сожалению, он определенно выдает 50p, но только удвоил количество кадров для меня. Я использую установку MacPorts на MacOS X с mencoder_extras среди других. moot 10 лет назад 0
Вы уверены, что ваш вход чересстрочный? Вы можете использовать `ffmpeg -i input.m2t -filter: v idet -f null -`, чтобы проанализировать его на наличие кадров, которые выглядят как чередующиеся с первым верхним кадром, чересстрочным с первым-первым или чересстрочным. mark4o 10 лет назад 2
Похоже, вы решили свою проблему, поэтому вы можете создать и принять свой собственный ответ. LordNeckbeard 9 лет назад 0
да, я не сразу заметил, что вы отредактировали ответ в вопросе, так как я просто просматривал. Было бы лучше перенести это на ответ. Peter Cordes 9 лет назад 0

4 ответа на вопрос

2
moot

Оказывается, что видео, которое я пытался сделать с двойным деинтерлейсом, на самом деле было 25p, которое было закодировано в видеофайл 50i, чтобы соответствовать более старому стандарту AVCHD. По-видимому, это обычная практика для безленточных камер с середины конца 2000-х годов. Поэтому, конечно, когда я пытаюсь деинтерлейсировать, я получаю максимум максимум 25 кадров в секунду, потому что между полями нет движения.

f: v yadif = 1 делает в точности то, что описано - он берет истинные чересстрочные 50i кадры и превращает их в удивительно высококачественный 50p вывод с использованием взвешенного по движению боб-алгоритма, точно так же, как фильтр реального времени «yadif 2x» в VLC, Выходной сигнал почти вдвое превышает эффективное вертикальное разрешение по сравнению с пропущенным кадром деинтерлейсом. Теперь это один из моих любимых видеофильтров, потому что, кажется, больше ничего не предлагает такую ​​возможность.

1
ecchphoto

Я использовал эту команду:

ffmpeg -i source_50i.MTS -aspect 1920:1080 -vf yadif=1,scale=1920:1080 -c:v libx264 -preset fast -profile:v high -crf 23 -ac 2 -strict experimental -c:a aac -b:a 96k -movflags +faststart -y result_50p.mp4 

и все работало нормально!

Я не проверял, хороший ли метод yadif или не хорошего качества, но на самом деле он был создан из 50i MTS до 50p mp4 из исходного файла видеокамеры. Исходный файл был 19 МБ, а результат - 21 МБ.

Я успешно использовал этот ответ для создания видео из промежутка времени GoPro со скоростью 60 кадров в секунду, в надежде, что другие найдут его полезным: `ffmpeg -i 'G% *. JPG' -r 60 -vf" scale = 1920: ih * 1920 / iw, crop = 1920: 1080, yadif = 1 "-c: v libx264 -preset slow -crf 18 -c: aac -b: 192k -pix_fmt yuv420p output.mkv` Graham P Heath 6 лет назад 0
0
Rajib

Пожалуйста, поймите - 50i означает 50 полей = 25 кадров из 50 чередующихся полей. Вы НЕ МОЖЕТЕ получить уникальные 50 кадров. Если это вообще возможно, то у этих кадров будут отсутствующие чередующиеся строки в видеокадре. Таким образом, 25p - это 50i top + 50i bottom вместе. Так и должно быть, и, надеюсь, так будет всегда. В противном случае результатом могут быть дублированные кадры (ужасные), как вы получили.

Это не верно. Yadif может интерполировать пропущенные строки и создавать реальное видео 50fps из 50i, если это действительно реальное видео 50i (без дублированных полей - т.е. 2 поля из одного кадра). Sarge Borsch 9 лет назад 1
@SargeBorsch Пожалуйста, предоставьте ответ - я с удовольствием удалю свой. Спасибо за информацию. К сожалению, я не могу проверить, потому что у меня больше нет доступа к чересстрочному видео. Rajib 9 лет назад 0
У меня нет времени искать, как (правильно) сделать это с помощью ffmpeg, но это явно сказывается на проигрывателе VLC (при воспроизведении видео 60i и включении Yadif x2). Похоже, что в ffmpeg есть ошибка - он всегда дублирует кадры, поэтому я получаю либо 120fps, либо 60fps, и в любом случае я должен отбрасывать каждый 2-й кадр, что является «хакерским», и у ffmpeg нет четкого способа отбрасывать каждый 2-й кадр. Sarge Borsch 9 лет назад 0
Если вы хотите поделиться коротким чересстрочным клипом, я сделаю это. Rajib 9 лет назад 0
В настоящее время у меня есть только одно такое видео, которое не предназначено для совместного использования, но я могу снять другое рано или поздно (моя камера DSLR имеет возможность записи в 60i) и отправить пример как исходного (чересстрочного) видео, так и обработанного. Sarge Borsch 9 лет назад 0
@SargeBorsch вы ищете `-vf yadif = 1` для получения выходных данных с одним интерполированным прогрессивным кадром на вход FIELD. `-vf yadif = 0` теряет дополнительное временное разрешение чересстрочного ввода, выводя прогрессивный кадр для каждого другого чересстрочного поля. Это сохраняет частоту кадров в том, что касается чересстрочно-незнающих вещей. Peter Cordes 9 лет назад 0
@PeterCordes да, насколько я помню, это так. Хотя в моем случае ffmpeg также удваивал кадры, что приводило к 4-кратной частоте кадров, поэтому мне нужно было отбрасывать каждый второй кадр после деинтерлейсинга (потому что я получал поток 120 кадров в секунду, который на самом деле составляет всего 60 кадров в секунду с дубликатами) Sarge Borsch 9 лет назад 0
Интересно, получили ли вы 120fps из-за ffmpeg наименьшей общей частоты кадров для контейнера, такого как mp4, где по умолчанию он не поддерживает переменную частоту кадров. например, с помощью ввода переменной fps с камеры телефона ffmpeg может создать выходной файл со скоростью 90 Кбит / с. С mkv в качестве формата выходного контейнера, ffmpeg фактически не передает дубликаты кадров в видеокодек, поэтому вы получаете правильный VFR. Там может быть возможность мультиплексировать VFR mp4 выход из ffmpeg, но IDK, что это такое. Peter Cordes 9 лет назад 0
Для тех, кому нужно знать, добавление `-vsync vfr` приведет к мультиплексированию VFR MP4. Gyan 7 лет назад 0
0
John Henry Wheeler

Я думаю, что многие не понимают, что 29.97 относится только к тому, как часто катодно-лучевая трубка возвращалась для сканирования одного и того же «пикселя». Он был на соседнем (выше или ниже) «пикселе» только на 1/60 секунды раньше.

Каждое растровое сканирование длилось 1/60 секунды. экспозиция. Следующее сканирование было следующим 1/60. Они не были проведены; их отправляли 60 раз в секунду, когда растры с половинным разрешением растягивались вертикально, чтобы заполнить экран. Благодаря чередующемуся сканированию нечетных и четных линий, полное разрешение было получено только с половиной пропускной способности.

Это всегда было 60 различных растров в секунду, а не 30.

Похожие вопросы