с помощью Media Source API...
Я понимаю, что это не относится к резервному варианту, указанному выше, но я думаю, что важно указать, что резервный вариант для webm не требуется, если видео MP4 закодированы соответствующим образом.
Видео MP4 также можно закодировать для поддержки Media Source API, который позволяет загружать фрагменты, которые делают видео доступным до завершения загрузки всего файла.
Реализация MP4 используется более широко, и в большинстве браузеров для нее не требуется запасной вариант webm.
Диаграмма, показывающая поддержку форматов видео для Media Source API здесь< /сильный>а>.
FFmpeg сделает это, и его исходный код будет открытым.
См. здесь: ( Кодируйте видео H.264 и WebM для MediaElement.js с помощью FFmpeg) ниже:
Крис Коулсон пишет: 14 июня 2012 г. (Windows)
Недавно я добавил видеоплеер на сайт клиента. Я нашел MediaElement.js Джона Дайера отличным решением для этого. Если вы предоставите версию видео в формате h.264 и WebM, оно будет воспроизводиться практически во всех браузерах. Для неподдерживаемых браузеров будет использоваться Flash.
Все видео клиента были в формате wmv, поэтому их нужно было преобразовать в форматы h.264 и WebM. К счастью, Джон также дал несколько указаний по кодированию в эти форматы с помощью FFmpeg:
http://johndyer.name/ffmpeg-settings-for-html5-codecs-h264mp4-theoraogg-vp8webm/
К сожалению, FFmpeg изменился с тех пор, как были опубликованы команды, поэтому потребовались небольшие модификации. Я также внес некоторые изменения, чтобы сохранить соотношение сторон видео и кодировать видео с более низким битрейтом и более высокой скоростью. Кроме того, некоторые из конвертируемых видео были очень короткими и заканчивались до 10-секундной отметки, на которой создается миниатюра. Чтобы решить эту проблему, я изменил сценарий, чтобы попытаться захватить миниатюру на отметке 1, 2, 3, 5 и 10 секунд, при этом каждый успешный захват перезаписывал последний.
Вот обновленный пакетный файл, который я использовал:
REM mp4 (H.264 / AAC)
"c:\program files\ffmpeg\bin\ffmpeg.exe" -y -i %1 -vcodec libx264 -pix_fmt yuv420p -vprofile high -preset fast -b:v 500k -maxrate 500k -bufsize 1000k -vf scale=trunc(oh*a/2)*2:480 -threads 0 -acodec libvo_aacenc -b:a 128k %1.mp4
REM webm (VP8 / Vorbis)
"c:\program files\ffmpeg\bin\ffmpeg.exe" -y -i %1 -vcodec libvpx -quality good -cpu-used 5 -b:v 500k -maxrate 500k -bufsize 1000k -vf scale=trunc(oh*a/2)*2:480 -threads 0 -acodec libvorbis -f webm %1.webm
REM jpeg (screenshot at 10 seconds, but just in case of a short video - take a screenshot earlier and overwrite)
"c:\program files\ffmpeg\bin\ffmpeg.exe" -y -i %1 -ss 1 -vframes 1 -r 1 -vf scale=trunc(oh*a/2)*2:480 -f image2 %1.jpg
"c:\program files\ffmpeg\bin\ffmpeg.exe" -y -i %1 -ss 2 -vframes 1 -r 1 -vf scale=trunc(oh*a/2)*2:480 -f image2 %1.jpg
"c:\program files\ffmpeg\bin\ffmpeg.exe" -y -i %1 -ss 3 -vframes 1 -r 1 -vf scale=trunc(oh*a/2)*2:480 -f image2 %1.jpg
"c:\program files\ffmpeg\bin\ffmpeg.exe" -y -i %1 -ss 5 -vframes 1 -r 1 -vf scale=trunc(oh*a/2)*2:480 -f image2 %1.jpg
"c:\program files\ffmpeg\bin\ffmpeg.exe" -y -i %1 -ss 10 -vframes 1 -r 1 -vf scale=trunc(oh*a/2)*2:480 -f image2 %1.jpg
Я также создал отдельный пакетный файл, который будет перебирать все wmv в заданном каталоге и запускать пакетный кодировщик для каждого файла:
for /r %1 %%i in (*.wmv) do "c:\program files\ffmpeg\CreateWebVideos.bat" %
Фарон Кодер говорит: 3 сентября 2014 г., 18:52 (*nix)
Привет -
Для тех, кто использует ffmpeg на основе unix — вот соответствующие авторские коды (выше) в названии unix.
ffmpeg -y -i $fileid -vcodec libx264 -pix_fmt yuv420p -vprofile high -preset fast -b:v 500k -maxrate 500k -bufsize 1000k -vf “scale=trunc(oh*a/2)*2:480″ -threads 0 -acodec libvo_aacenc -b:a 128k “$file.mp4″ < /dev/null
ffmpeg -y -i $fileid -vcodec libvpx -quality good -cpu-used 5 -b:v 500k -maxrate 500k -bufsize 1000k -vf "scale=trunc(oh*a/2)*2:480" -threads 0 -acodec libvorbis -f webm "$file.webm" < /dev/null
ffmpeg -y -i $fileid -ss 1 -vframes 1 -r 1 -vf "scale=trunc(oh*a/2)*2:480" -f image2 "$file.jpg" < /dev/null
ffmpeg -y -i $fileid -ss 2 -vframes 1 -r 1 -vf "scale=trunc(oh*a/2)*2:480" -f image2 "$file.jpg" < /dev/null
ffmpeg -y -i $fileid -ss 3 -vframes 1 -r 1 -vf "scale=trunc(oh*a/2)*2:480" -f image2 "$file.jpg" < /dev/null
ffmpeg -y -i $fileid -ss 5 -vframes 1 -r 1 -vf "scale=trunc(oh*a/2)*2:480" -f image2 "$file.jpg" < /dev/null
ffmpeg -y -i $fileid -ss 10 -vframes 1 -r 1 -vf "scale=trunc(oh*a/2)*2:480" -f image2 "$file.jpg" < /dev/null
Надеюсь, это поможет.
person
Community
schedule
14.09.2014