FFmpeg снижает качество видео несмотря на низкий CRF

332
dylanweber

Я пытался закодировать коллекцию видео, я должен удалить ненужные логотипы с самого начала и уменьшить размер файла. Я использую FFmpeg, чтобы начать примерно через 6,2 секунды или 186 кадров после начала видео. Когда я закончил, я увидел горизонтальные линии, которые казались показательными для чересстрочной развертки, поэтому я попытался добавить -vf yadifв свой скрипт bash. Вот мой скрипт для кодирования:

if [[ $PWD = *"show_name"* ]]; then for i in ;  do ffmpeg -ss 6.2 -i "./show name - s2e$i.mkv" -c:v libx264 -preset slow -crf 16 -vf yadif -c:a copy "/blah/blah/show name - s2e$i.mkv"; done fi 

Когда сценарий будет завершен, у меня останется видео, которое выглядит не очень хорошо, учитывая, что оно должно быть «визуально без потерь». Вот несколько наглядных примеров.

Image Comparision

Верхнее изображение - оригинальный носитель. Нижнее изображение - это новый закодированный носитель. Обратите внимание на высокий уровень ошибочных пикселей вокруг слегка заштрихованных областей. Это результат чересстрочного фильтра? Как улучшить качество изображения? Все, что я на самом деле пытаюсь сделать, это удалить несколько секунд из начала клипа.

Первоначально, когда я использовал -c copyдля своих настроек ffmpeg, он копировал медиа непосредственно, что, казалось, заставляло игроков пропускать первые десятки кадров в медиа, так как, я полагаю, у него не было ключевого кадра, чтобы продолжить с (?). Вот видеоинформация MediaInfo об оригинальном видеофайле.

Как удалить первые 6,2 секунды или 186 кадров каждого клипа, сохранив исходное качество видеофайла?

0
Вы пытались поместить параметр `-ss` ** после ** параметра` -i` при использовании подхода `-c copy`? Попробуйте: `ffmpeg -i" ./show name - s2e $ i.mkv "-ss 00: 00: 06.2 -c скопировать" / blah / blah / show name - s2e $ i.mkv "` в вашем скрипте. Также см. [Отличный документ fhmpeg slhck] (https://blog.superuser.com/2012/02/24/ffmpeg-the-ultimate-video-and-audio-manipulation-tool/). Ищите «Режущее видео». Также связано: [Использование ffmpeg для разрезания видео] (https://superuser.com/questions/138331/using-ffmpeg-to-cut-up-video) mcalex 6 лет назад 1
@mcalex Ваш совет оказался полезным, но он также выглядит так, как будто новые видеофайлы, которые я пытаюсь кодировать, на самом деле чересстрочные, и ffmpeg пытается преобразовать их в прогрессивную при кодировании, что ухудшает качество. Есть идеи? dylanweber 6 лет назад 0
Кроме того, включение фильтра детелецина в Handbrake, по-видимому, полностью решило проблему ... Возможно, я использовал не тот фильтр. dylanweber 6 лет назад 1
Здорово. Я собирался предложить сбросить `crf` еще дальше (да - вне здравого смысла) или, возможно, проконсультироваться с [экспертами по видеопроизводству] (https://video.stackexchange.com/) mcalex 6 лет назад 0
Похоже, вы решили это, но это чересстрочные артефакты, не связанные со значением CRF. Gyan 6 лет назад 1

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

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