@bakhritdinov_b

Ffmpeg avi to mp4 h 264?

На сервере есть avi файлы размером от 1 до 2 гб, хочу конвертировать avi формат на mp4 с поддержкой h 264, на сервере около 200 avi видео файлов, набираю команду:
ffmpeg -i file.avi -c:v libx264 -pix_fmt yuv420p -movflags faststart file.mp4

Конвертирует 1 видео около 10 минут, на сервере 8 гб оперативка.
Хочу конвертировать файл не теряя качество и быстро конвертировать, иначе я 200 фильмов по 10-20 минут до конца жизни буду конвертировать. размер не имеет значения, мне устраивает mp4 файлы с размером как avi. например avi файл размером 1,37гб а после конвертирования mp4 размером около 1,30 / 1,20 гб! Важно качество видео файлов и скорость конвертирования!
  • Вопрос задан
  • 7702 просмотра
Решения вопроса 1
@Nc_Soft
Тут важен процессор, могу предложить поиграться с пресетами.
Вот вариант примерно как ваш
ffmpeg -i file.avi -c:v libx264 -c:a libvo_aacenc  -preset medium  -profile:v high -level 4.2 -r 24 -g 24  -ac 2 -movflags faststart -threads 0 file.mp4


Вот вариант побыстрее, но и качество чуть похуже
ffmpeg -i file.avi -c:v libx264 -c:a libvo_aacenc  -preset fast  -profile:v high -level 4.2 -r 24 -g 24  -ac 2 -movflags faststart -threads 0 file.mp4

Можно добавить опцию -t 00:00:30 чтобы конвертить только перые 30секунд для теста
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@monah_tuk
Товарищ Nc_Soft дал вполне работоспособные команды, да собственно и ваша изначальная тоже.

UPD: по замечанию Nc_Soft исправлено про треды (прочитал 0 как 1, бывает).
Отмечу, что -threads 0 стоит продублировать перед -i и после: положение опции играет роль: до -i - параметры для входа (как будет параллелиться декодировщик), после -i - параметры для выхода (как будет параллелиться кодировщик). Значение параметра - число тредов. 0 - будет выбрано оптимальное число (обычно по числу ядер с учётом гипертрединга), указывать больше чем есть - начнёте платить за переключения контекстов сильно много.

С параметрами кодека лучше изучить: ffmpeg.org/ffmpeg-codecs.html#libx264_002c-libx264rgb и поиграться с нужными параметрами. Качество, как и цвет и вкус, параметр очень субъективный.

Ещё вариант ускорения (если процессор простаивает и упираешься в IO): как минимум результат писать на tmpfs, после чего помещать куда нужно. Ну или переместиться полностью на SSD.

ЗЫ интересно, кто меня в эксперты подписал?
Ответ написан
s0ci0pat
@s0ci0pat
I'm Awesome
Конвертирует процессор, а не оперативка.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы