Как сделать MPEG2 видео файл с максимально возможным качеством с помощью FFMPEG?

у меня в формате WMV (версия 9 (WMV3), 960x720, 30.000030 ФПС, Планар 4:2:0 ЮВ, произведенные в PowerPoint 2010) файл и нужно конвертировать его в формат MPEG2 - единственный формат, мой телевизор может считывать данные из флэш-накопитель USB (я также попытался МР4/сек.264, формат видео: AVI/XviD видео - ничего, но с MPEG2 работает).

я сумел справится с простой

ffmpeg -i "in.wmv" -c:v mpeg2video "out.mpg"

но качество результата ужасное (четко видны визуальные искажения) и воспроизведение не плавное (слишком медленное при некоторые моменты.)

Я тоже пробовал

ffmpeg -i "in.wmv" -c:v mpeg2video -pix_fmt yuv420p -me_method epzs -threads 4 -r 30.000030 -g 45 -bf 2 -trellis 2 -cmp 2 -subcmp 2 -s 960x720 -b 2500k -bt 300k -async 1 -y "out.mpg"

(Я нашел это где - то в интернете и немного изменил-изменил Ресул, частоту обновления и формат вывода (от VOB до голого MPG)) успешно, но качество все еще слишком плохое.

какие параметры я должен использовать, чтобы сохранить максимально возможным качеством? Степень сжатия не имеет значения, даже увеличение размера файла является приемлемым.

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

ffmpeg -i in.mpg -i silence.ogg -c:v copy -c:a libmp3lame out.mpg

и даже голый

ffmpeg -i in.mpg -c:v copy -out.mpg

выдает ошибки" buffer underflow "и" packet too large". (в.mpg-это файлы, созданные одним и тем же двоичным файлом FFMPEG и одним и тем же исходным файлом WMV с использованием первых двух команд в вопросе).

Я использую zeranoe ffmpeg сборки на Windows 7.

25
задан Ivan
23.04.2023 23:06 Количество просмотров материала 2478
Распечатать страницу

2 ответа

проблема в том, что битрейт по умолчанию для MPEG-2 довольно низкий (как и для большинства других видеокодеров в ffmpeg, исключением является H. 264). MPEG-2 также не лучший выбор в качестве кодека в наши дни.

лучшее качество для MPEG-2

у вас есть несколько вариантов, если вы хотите придерживаться MPEG-2:

  • увеличить битрейт. Теперь вы используете -b:v 2500k. Если это HD-видео, вы не получите далеко только 2,5 Мбит / с. Вам нужно на минимум вдвое или даже больше, чтобы результат выглядел хорошо. Например, используйте -b:v 6000k -target pal-dvd.

    для 720p, я думаю, что вы все равно должны использовать более высокий битрейт. Помните, что DVD используют MPEG-2 и приходят в около 4,7 ГБ для 2 часов фильма, так что вы в конечном итоге около 5-8 Мбит/с. MPEG-2 действительно не очень эффективен для сжатия и лучше работает при более высоких битрейтах.

  • используйте определенную настройку качества. Изменить -b:v … to -qscale:v 2. Количество здесь колеблется от 1 до 31 а чем выше - тем ниже качество. Нет смысла выходить за рамки 4 или 5. Если вы не заботитесь о битрейте, начните с 2 и посмотрите, работает ли это для вас.

возиться с количеством B-кадров, методом оценки движения или размером GOP может немного изменить качество, но не приведет к большим изменениям.

тихий звук

использовать -f lavfi -i aevalsrc=0 для генерации бесшумного аудиопотока. Например:

ffmpeg -i "in.wmv" -f lavfi -i aevalsrc=0 -shortest -c:v mpeg2video -qscale:v 2 -c:a libmp3lame "out.mpg"

возможно, потребуется добавить -target pal-dvd к над командой принудить некоторый размер буфера.

я выбрал MP3 в качестве кодека. MPEG файлы не могут содержать аудио, кроме MPEG Layer I и II аудио, а также PCM потоков, так что использование тихий Ogg Vorbis файл не будет работать, если вы не конвертировать аудио поток, а также (который не то, что вы делаете, когда вы используете -c:a copy).

использовать другой видеокодек

я удивлен, что телевизор, который воспроизводит видеофайлы, будет читать MPEG-2, но не что-нибудь еще. По крайней мере MPEG-4 Part II video должно поддерживаться (это то, что вы знаете как "DivX" – кодировщик MPEG-4 Part II). Чтобы вы могли попробовать:

ffmpeg -i "in.wmv" -f lavfi -i aevalsrc=0 -shortest -c:v libxvid -qscale:v 2 -c:a libmp3lame "out.mp4"

ваш телевизор также может поддерживать H. 264, но только определенный профиль. Попробуйте использовать baseline профиль, например:

ffmpeg -i "in.wmv" -f lavfi -i aevalsrc=0 -shortest -c:v libx264 -profile:v baseline -crf 23 -c:a aac -strict experimental "out.mp4"

в приведенном выше примере я использовал опцию CRF, чтобы установить качество вместо qscale. Смотрите H. 264 руководство по кодированию дополнительные.

11
отвечен slhck 2023-04-25 06:54

Я бы сразу сказал, Если размер файла действительно не имеет значения, то просто поэкспериментируйте с увеличением скорости передачи битов.

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

ffmpeg.exe -f lavfi -i aevalsrc=0:0::duration=YOUR_DESIRED_DURATION -ab 10k YourAudioName.aac

это не будет работать для вас, хотя, так как вы используете контейнер mpg, так что вы можете попробовать.(МР3 контейнер)

ffmpeg.exe -f lavfi -i aevalsrc=0:0::duration=YOUR_DESIRED_DURATION -ab 10k YourAudioName.mp3

казалось, это сработало для меня.

0
отвечен dstob 2023-04-25 09:11

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх