FFMPEG конвертировать HTML 5 видео не работает - PullRequest
16 голосов
/ 30 марта 2011

Я использую FFMPEG для преобразования видео в .mp4,, ogg, .webm , чтобы его можно было просматривать во всех браузерах с поддержкой HTML5 с помощью тега video. Проблема в том, что мне удается преобразовать видео в 3 требуемых формата, но он не отображает видео в теге видео , все, что я получаю, это IE9: красный крест, Firefox: серый крест, может ли это бытьпроблема с преобразованием или это связано с тем, как я добавляю их в источник тега video. Вот что я сделал :

  1. Командная строка (ы) FFmpeg:

    ffmpeg -i test.mp4 test.mp4
    ffmpeg -i test.mp4 test.ogg
    ffmpeg -i test.mp4 test.webm
    
  2. Вот тег видео:

    <video id="video"  height="340" width="470" onplaying="PlayVideoFromVid('PAUSE')"  onpause="PlayVideoFromVid('PLAY')" onended="ResetVideo()" preload="true" autobuffer="true" controls="true">
        <source src="test.ogg" type="video/ogg"></source>
        <source src="test.mp4" type="video/mp4"></source>
    </video>
    
  3. Строки веб-конфигурации для поддержки видео:

    <staticContent>
        <mimeMap fileExtension=".mp4" mimeType="video/mp4" />
        <mimeMap fileExtension=".ogg" mimeType="audio/ogg" />
        <mimeMap fileExtension=".oga" mimeType="audio/ogg" />
        <mimeMap fileExtension=".ogv" mimeType="video/ogg" />
        <mimeMap fileExtension=".webm" mimeType="video/webm" />
    </staticContent>
    

Было бы замечательно, если бы кто-то мог отправить мне необходимые параметры для ffmpeg для преобразования видео в 3 требуемых формата и пример того, как они устанавливают источник в теге video для их повторного отображения.И любой другой совет будет отличным, например, как настроить качество и т. Д. При конвертации.

Заранее спасибо.

Ответы [ 7 ]

30 голосов
/ 31 марта 2011

Разобрался, спасибо за помощь :) Я нашел следующее:

1. Вам необходимо скачать последнюю версию ffmpeg + пресеты:

ffmpeg.arrozcru.org / autobuilds / ffmpeg / mingw32 / static /

2. Вам необходимо создать переменную HOME environmentmetal:

(a) www.moosechips.com / 2009/08 / installation-ffmpeg-binary-in-windows /

(б) www.itechtalk.com / thread3595.html

3. Скопируйте пресеты в папку переменных среды

4. Для преобразования с помощью ffmpeg необходимо использовать следующие команды:

Для mp4 (H.264 / ACC):

ffmpeg -i INPUTFILE -b 1500k -vcodec libx264 -vpre slow -vpre baseline -g 30 "OUTPUTFILE.mp4"

Для вебм (VP8 / Vorbis):

ffmpeg -i "INPUTFILE"  -b 1500k -vcodec libvpx -acodec libvorbis -ab 160000 -f webm -g 30 "OUTPUTFILE.webm"

Для огв (Theora / Vorbis):

ffmpeg -i "INPUTFILE" -b 1500k -vcodec libtheora -acodec libvorbis -ab 160000 -g 30 "OUTPUTFILE.ogv"
3 голосов
/ 30 марта 2011

Сначала я попробую этот код. Это максимально просто.

    <video controls="true">
        <source src="test.mp4" type="video/mp4"></source>
        <source src="test.webm" type="video/webm"></source>
        <source src="test.ogv" type="video/ogg"></source>
    </video>

Создание файлов mp4, минимальное количество аргументов. К сожалению, я не очень много тестировал.

    ffmpeg -i input_file -vcodec libx264 -vpre medium output_file.mp4

Для создания файлов ogv Вам следует использовать ffmpeg2theora. С ffmpeg слишком много проблем.

1 голос
/ 04 марта 2012

Я перепробовал много видеофайлов, вариантов кодирования, конфигураций сервера, версий FFMPEG, других видеокодеров и т. Д., Прежде чем выяснить, что при обработке файлов MP4 для IE9 следует учитывать метаинформацию файла, называемую атомом moov, встроенную в Сам файл MP4. Если он находится в конце файла, куда его помещают некоторые кодировщики, в том числе ffmpeg, IE9 не начнет воспроизведение видео, пока не будет загружен весь видеофайл. Перемещение метаданных moov atom в начало файла обеспечивает прогрессивную загрузку файла MP4, и IE9 прекрасно обрабатывает видео.

Для выполнения этой операции есть инструмент под названием qt-faststart . Я творил чудеса, собирая и используя версию командной строки для Linux, поставляемую с ffmpeg.

make tools/qt-faststart
sudo cp tools/qt-faststart /usr/local/bin/
qt-faststart original_file.mp4 modified_file.mp4
1 голос
/ 30 марта 2011

Я думаю, потому что я все еще новичок, мне не разрешают оставлять комментарии?Итак, оставив это как ответ, хотя я думаю, что это больше похоже на предположения.

Начал играть с видео HTML5 неделю назад или около того.Я столкнулся с множеством проблем, которые в конечном итоге оказались из-за конвертированных файлов фильмов, с которыми я работал.Вот код, который я использовал для своих примеров:

<video id="movie" width="600" height="338" poster="http://yourDomain.com/yourDirectory/posterFrame.jpg" controls="true" autoplay="true">
    <source src="http://yourDomain.com/yourDirectory/yourMovie.mp4" type='video/mp4' />
    <source src="http://yourDomain.com/yourDirectory/yourMovie.webm" type='video/webm' />
    <source src="http://yourDomain.com/yourDirectory/yourMovie.ogg" type='video/ogg; codecs="theora, vorbis"' />
    <object width="600" height="338" type="application/x-shockwave-flash" data="http://whywouldyouclickthat.com/flowplayer/flowplayer-3.2.7.swf"><param name="movie" value="http://yourDomain.com/flowplayer/flowplayer-3.2.7.swf" /><param name="allowfullscreen" value="true" /><param name="flashvars" value='config={"clip": {"url": "http://yourDomain.com/yourDirectory/yourMovie.mp4", "autoPlay":true, "autoBuffering":true},"plugins": {"controls": null}}' /></object>
</video>

Я смоделировал свой код после Погружения в HTML (видео) Марка Пилигрима запись.

Несколько вещейЯ могу подумать, чтобы попробовать:

1) Удалите дополнительные атрибуты из вашего тега.Я менее знаком с тем, что вы реализуете (onplaying, onpause), но, возможно, сначала попробуйте использовать только основы: ширину, высоту и элементы управления.Посмотрите, поможет ли это.

2) В своих тестах я конвертировал свои версии .ogg и .webm, используя Miro .По какой-то причине фильмы, казалось бы, воспроизводили файлы локально ... но когда я просматривал их несколько раз в своих браузерах, у меня появлялись пустые экраны.В итоге я использовал Firefogg , чтобы в конечном итоге конвертировать мои версии .ogg и .webm.Это было странное поведение.

Не уверен, что FFmpeg является нарушителем, и что-то, что вам нужно использовать как часть вашего рабочего процесса.Но если вы просто хотите, чтобы ваш код и примеры фильмов работали и работали, Firefogg помог мне.

В конце концов, я понял, в чем причина, когда я поменял рабочие версии других фильмов вместомои обращенные.Я бы порекомендовал вам попробовать подключить версии Big Buck Bunny .mp4, .webm и .ogg ... и посмотреть, сможете ли вы даже заставить их отображаться.По крайней мере, таким образом, вы можете изолировать, является ли это синтаксисом или проблемой преобразования.

3) Наконец, я бы рекомендовал тестировать один видеофайл и один браузер за раз.Это, вероятно, само собой разумеющееся, но все же стоит выбросить.

Sidenote: как только вы разберетесь с каждым типом файла, сначала убедитесь, что вы указали версию .mp4.Это из записи видео HTML5 от Pilgrim:

В iPad на iOS 3.x была ошибка, из-за которой они не могли заметить ничего, кроме первого источника видео в списке.iOS 4 (бесплатное обновление для всех iPad) исправляет эту ошибку.Если вы хотите доставить видео владельцам iPad, которые еще не обновились до iOS 4, вам нужно сначала указать свой файл MP4, а затем - бесплатные форматы видео.

0 голосов
/ 02 июля 2016

Убедитесь, что ваше видео обслуживается с использованием правильного Content-type -header

Должно быть Content-Type:video/mp4 для mp4 / m4v.

0 голосов
/ 07 апреля 2012

Перепробовав большинство предложенных выше советов, вот что на самом деле помогло мне преобразовать wmv-файлы в небольшие mp4, webm, ogg на компьютере с Windows7-64:

64bit\ffmpeg -i test.wmv test.mpg

old\ffmpeg -i test.mpg -vcodec h264 -s 320x240 test.mp4

32bit\ffmpeg -i test.mpg -vcodec libvpx -acodec libvorbis -f webm -s 320x240 test.webm

32bit\ffmpeg -i test.mpg -vcodec libtheora -acodec libvorbis -s 320x240 test.ogg

old \ ffmpeg - версия SVN-r5570

64bit \ ffmpeg - версия N-38292-ga4c22e3, построенная 2/27/12 14: 55: 47

32bit \ ffmpeg - версия N-39267-g4082198, построенная 3/25 /12 20: 25: 08

(wmv мог читать только 64-битная версия, поэтому я использовал его для преобразования в mpg в качестве общего формата. Только старый ffmpeg мог создать mp4.)

0 голосов
/ 09 января 2012

У меня была такая же проблема с IE9, показывающим красный крестик при попытке показать видео .mp4. Простота использования ffmpeg (как предложил Михас) решила эту проблему для меня.

<video id="movie" width="600" height="360" controls preload="auto">
   <source src="http://yourDomain.com/faceplant.mp4" type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"'></source> 
   <source src="http://yourDomain.com/faceplant.webm" type='video/webm; codecs="vp8.0,vorbis"'></source>
   <source src="http://yourDomain.com/faceplant.ogv" type='video/ogg; codecs="theora, vorbis"'></source>
</video>

Параметры ffmpeg: (я использовал .ogv из ffmpeg2theora в качестве входного файла):

ffmpeg -i input_file.ogv -vcodec libx264 -vpre hq output_file.mp4

Моя версия ffmpeg:

ffmpeg 0.8.3
libavutil    51.  9. 1 / 51.  9. 1
libavcodec   53.  7. 0 / 53.  7. 0
libavformat  53.  4. 0 / 53.  4. 0
libavdevice  53.  1. 1 / 53.  1. 1
libavfilter   2. 23. 0 /  2. 23. 0
libswscale    2.  0. 0 /  2.  0. 0
libpostproc  51.  2. 0 / 51.  2. 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...