кодирование JPEG в виде видео H264 - PullRequest
2 голосов
/ 13 февраля 2012

Я использую следующую команду для кодирования AVI в видео H264 для использования в теге видео HTML5:

ffmpeg -y -i "test.avi" -vcodec libx264 -vpre slow -vpre baseline -g 30 "out.mp4"

И это прекрасно работает.Но я также хочу создать видео-заполнитель (длинную историю) из одного неподвижного изображения, поэтому я делаю это:

ffmpeg -y -i "test.jpg" -vcodec libx264 -vpre slow -vpre baseline -g 30 "out.mp4"

И это не работает.Что дает?

РЕДАКТИРОВАТЬ: После попытки ответа LordNeckbeards, вот мой полный вывод: http://pastebin.com/axhKpkLx

1 Ответ

4 голосов
/ 13 февраля 2012

Пример для 10-секундного выхода:

ffmpeg -loop 1 -framerate 24 -i input.jpg -c:v libx264 -preset slow -tune stillimage -crf 24 -vf format=yuv420p -t 10 -movflags +faststart output.mp4

То же самое, но со звуком.Длительность выходного сигнала будет соответствовать длительности входного аудиосигнала:

ffmpeg -loop 1 -framerate 24 -i input.jpg -i audio.mp3 -c:v libx264 -preset slow -tune stillimage -crf 24 -vf format=yuv420p -c:a aac -shortest -movflags +faststart output.mp4
  • -loop 1 повторяет ввод изображения.

  • -framerate устанавливаетчастота кадров ввода изображения.По умолчанию 25. У некоторых игроков возникают проблемы с низкой частотой кадров, поэтому рекомендуется значение, превышающее 6.

  • -i input.jpg вход.

  • -c:v libx264 видеокодер H.264.

  • -preset x264 предустановка кодирования.Используйте самую медленную из возможных.

  • -tune x264 настройка для различных настроек в соответствии с конкретными ситуациями.

  • -crf за качество.Чем ниже значение, тем выше качество.Используйте самое высокое значение, которое все еще обеспечивает приемлемое качество для вас.По умолчанию установлено значение 23.

  • -vf format=yuv420p выводит формат пикселей как yuv420p.Это гарантирует, что выход использует широко приемлемую схему подвыборки цветности.Рекомендуется для libx264 при кодировании из изображений.

  • -c:a aac аудиокодер AAC.Если ваш ввод уже AAC или M4A, используйте вместо -c: копию вместо потоковую копию вместо перекодирования.

  • -t 10 (в первомпример) выводит 10 секунд.Необходим, потому что изображение зацикливается бесконечно.

  • -shortest (во втором примере) выводит ту же продолжительность, что и кратчайший ввод.В данном случае это аудио, поскольку изображение зацикливается бесконечно.

  • -movflags +faststart перемещает атом moov в начало файла после завершения кодирования.Позволяет начать воспроизведение быстрее в режиме прогрессивной загрузки;в противном случае все видео необходимо загрузить перед воспроизведением.

  • -profile:v main (опционально), некоторые устройства не могут обрабатывать высокий профиль.

См. FFmpeg Wiki: H.264 для получения дополнительной информации.

...