
Краткое содержание:У меня есть старый фильм, который я скачал с YouTube несколько лет назад, сохраненный как flv. Я хочу извлечь из него 13-минутный клип. Для этого я использовал ffmpeg, чтобы преобразовать его в mp4, чтобы загрузить его в DaVinci, где я извлек клип. Затем я использовал Handbrake, чтобы сжать его. Но когда я это сделал, HandBrake значительно уменьшил размер кадра, и сжатый клип получился несколько размытым по сравнению с оригиналом.
Почему HandBrake принудительно уменьшает размер кадра и как мне заставить его выводить кадры правильного размера?
Подробности:
Файл flv имеет размер 268 МБ, продолжительность 107 минут, размер кадра 318x240, частота кадров 25:
Theкоманда ffmpegЯ использовал конвертацию в mp4:
ffmpeg -i input.flv -c copy output.mp4
Это заняло около секунды. Результат — 264 МБ:
Я загрузил его в DaVinci, извлек клип, затем сгенерировал его в формате mp4, H.265, 318x240, 25 кадров в секунду:
Результат — 51,4 МБ, 13:19 мм:сс. MediaInfo сообщает, что это HEVC, что, как я понимаю, означает, что это H.265, как я и просил:
Соотношение размера и времени намного больше, чем у полного фильма:
- Фильм: 264 МБ / 107 минут = 2,5 МБ/мин.
- Клип: 51,4 МБ / 13,33 мин. = 3,9 МБ/мин.
Когда я загружаю клип в HandBrake, он сообщает мне, что источник 318x240, 25 кадров в секунду. Несмотря на то, что он в H.265, HandBrake сообщает мне, что он в H.264. Затем HandBrake также противоречит своей исходной информации, указывая в разделе «Треки», что он 30 кадров в секунду и что размер 234x174.
========================
На вкладке «Видео» Handbrake кодер отображается как H.264, а частота кадров — 30. Частота кадров — 22:
========================
Я изменил это на 265 и 25:
========================
На вкладке «Размеры» снова указано, что размер 318x240, но затем говорится, что:
Масштабированный размер и конечный размер хранилища составляют 234x174. Я пробовал нажимать на несколько вещей, но не могу заставить его изменить этот выходной размер.
========================
Когда я это запускаю, вывод составляет 22 МБ, что является приятным сокращением размера файла:
- Сжатый клип: 22 МБ / 13,33 мин. = 1,7 МБ/мин.
Но размер кадра 234x174:
Видео несколько размыто по сравнению с оригиналом, что, по-видимому, может быть вызвано уменьшенным размером кадра.
Клип создан DaVinci.
Это может дать ключ к решению проблемы. Изображение занимает меньше, чем полное окно проигрывателя. Уменьшил ли DaVinci масштаб видео?
Почему HandBrake принудительно уменьшает размер кадра и как мне заставить его выводить кадры правильного размера?
решение1
Редактировать от спрашивающего: Я принял этот ответ, потому что он дал мне то, что мне было нужно. Но см. дальнейшие подробности в дополнительном ответе, который я также дал.
Может быть полезно помнить, что Handbrake в значительной степени является оболочкой для FFMPEG с некоторыми относительно удобными для пользователя предустановками. Ваш процесс в настоящее время идет FFMPEG > DaVinci > FFMPEG, без какой-либо реальной причины, которую мы можем видеть для дополнительных шагов. Так что пропустите все промежуточные шаги и просто используйте FFMPEG для обрезки видео. Вот еще один вопрос, который может охватывать основы вашей потребности:https://stackoverflow.com/questions/21420296/how-to-extract-time-accurate-video-segments-with-ffmpeg
Укажите время начала клипа с помощью -ss 00:00:00
и время окончания с помощью -to 00:00:00
. Как в этом примере из вопроса, ссылку на который я привел чуть выше:
ffmpeg -y -i [INPUT.file] -ss 00:42:42 -to 00:84:84 -codec copy [OUTPUT.file]
Делая это, вы исключаете все возможные проблемы, вызванные многочисленными шагами, которые вы в настоящее время используете.
решение2
Я принимаю ответ от "music2myear", потому что он дал мне то, что мне было нужно. Но по какой-то причине он предположил, что мне не важен размер выходного файла. Но мне это важно, поэтому я и запустил HandBrake.
Поэтому я изменил codec
параметр в этом ответе. Вот сводка моих результатов:
Клип из DaVinci в формате H.265: 51,4 МБ
Клип DaVinci, затем HandBrake: 22,0 МБ (размыто)
Клип из FFmpeg с
-codec copy
: 29,5 МБКлип из FFmpeg с
-codec:v hevc -codec:a copy
: 15.2 МБ
Оба результата FFmpeg, похоже, имеют хорошее качество. Тот, что с кодеком, copy
занял около секунды, тот, что с hevc
, около минуты.
Результат использования mFFmpeg с кодеком hevc
дал очень хорошее уменьшение размера файла:
- Фильм: 264 МБ / 107 минут = 2,5 МБ/мин.
- Клип от DaVinci: 51,4 МБ / 13,33 мин. = 3,9 МБ/мин.
- Клип из FFMpeg с кодеком
hevc
: 15,2 МБ / 13,33 мин = 1,1 МБ/мин.
Итак, у меня нет ответа на вопрос, почему HandBrake (или комбинация DaVinci и HandBrake) уменьшал размер кадра. Но у меня есть ответ на вопрос, как получить качественный вывод с правильным размером кадра (и эффективным размером файла), а именно:использовать FFmpeg напрямую.
решение3
Это обходной путь, а не точный ответ: выполните весь процесс за один шаг, используя графический интерфейс, который обеспечивает полный контроль над сохранением выходных данных.
Два бесплатных видеоредактора с открытым исходным кодом,ВырезкаиOpenShot(обе версии доступны в Linux, Mac и Windows, и оба приложения для Windows работают под управлениемвино, также на этой машине Ubuntu), например, может открывать видеофайлы FLV, редактировать их и сохранять отредактированный вывод в различных форматах и с регулируемым разрешением и качеством. Существует многоальтернативные видеоредакторы, слишком.
Скриншот выше взят изЭкспорт видео OpenShotдиалог иShotCutпредлагает еще более детальный контроль вывода. Вы выбираете сегменты для редактирования, применяете фильтры, такие какРезкость, если необходимо, и экспортирует с цветовой гаммой (например, Broadcast, MPEG или JPEG), разрешением, частотой кадров, сжатием и т. д. под контролем пользователя, все с помощью одного инструмента. Ни одна из программ не пугает в использовании, поскольку разумные значения по умолчанию уже установлены.