2

Я хочу кодировать изображения с помощью FFMPEG в видеофайл h264, который будет работать на браузерах Windows и Mac, а также на устройствах iOS / Android для отображения в HTML5. Есть ли способ сделать это, используя один закодированный файл? В настоящее время моя строка ffmpeg кодирует только для Windows / Android сейчас

Вот мой текущий код ffmpeg:

и вот мой HTML5 код отображения:

ffmpeg -y -r 25 -i ./images/video%04d.png -i  music.wav -shortest -vcodec libx264 -s  720x480 -strict experimental -acodec aac video_file.mp4

<video width="640" height="480"  controls="" preload="" poster="../poster.jpg">
    <source src="video.mp4" type="video/mp4">
    Your browser does not support the video tag.
</video>

Если я заменю -vcodec на mpeg4 вместо libx264, он будет работать на iOs/MAC, но не на windows! Что действительно сбивает с толку!

использование ffmpeg версии 3.0.1-static http://johnvansickle.com/ffmpeg/ Copyright (c) 2000 -2016 разработчики FFmpeg

1 ответ1

1

Поскольку вы используете самую последнюю версию ffmpeg, используйте команду ниже

ffmpeg -y -i ./images/video%04d.png -i music.wav -profile:v baseline -shortest -vcodec libx264 -s  720x480 -acodec aac -movflags +faststart video_file.mp4

profile имеет наименьший общий знаменатель baseline для широкой совместимости. Поле MOOV смещается в начало файла, поэтому перед началом воспроизведения не нужно загружать весь MP4.

По умолчанию ffmpeg назначает частоту кадров 25 для последовательностей изображений, если не указано иное. С декабря 2015 года собственный кодер AAC больше не помечается как экспериментальный.

И значение размера 720x480, и размер видео HTML5 - 640x480 - заставляют меня думать, что вы имеете дело с исходным материалом NTSC. Если так, используйте

ffmpeg -y -framerate 30000/1001 -i ./images/video%04d.png -i music.wav -vf "scale=640x480,setsar=1' -profile:v baseline -shortest -vcodec libx264 -acodec aac -movflags +faststart video_file.mp4

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .