Ffmpeg конвертировать файл mov в mp4 для видеотега HTML5 IE9

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

Я использую следующие команды:

ffmpeg -i movie.mov -vcodec copy -acodec copy out.mp4
ffmpeg -i movie.mov -vcodec libx264 -vprofile high -preset slow -b:v 500k -maxrate 500k -bufsize 1000k -vf scale=-1:480 -threads 0 -acodec libvo_aacenc -b:a 128k -pix_fmt yuv420p outa.mp4
ffmpeg -i movie.mov -b:V 1500k -vcodec libx264 -preset fast -g 30 adel.mp4
ffmpeg -i movie.mov -acodec aac -strict experimental -ac 2 -ab 160k -vcodec libx264 -preset slow -f mp4 -crf 22 lamlam.mp4
ffmpeg -i movie.mov -acodec aac -strict experimental -ac 2 -ab 160k -vcodec libx264 -preset slow -profile:v baseline -level 30 -maxrate 10000000 -bufsize 10000000 -f mp4 -threads 0 adiel.mp4

и т.д. снова все эти команды производят действительный файл mp4, который работает на chrome, safari и т.д.... и работает даже тогда, когда я запускаю их в самих окнах, используя оконный медиаплеер. Когда я помещаю этот файл в тег видео (я использую http://videojs.com/) в IE9, он не работает!

<div class="vidoco-content" style="margin-top: 20px;">
<video id="divVid" class="video-js vjs-default-skin vidoco-center" controls preload="none" width="600" height="400" poster="<?php echo(DOMAIN); ?>static/test.jpg">
    <source src="<?php echo(DOMAIN); ?>static/out.mp4" type="video/mp4" />
</video>

Если я использую программное обеспечение miro video converter, чтобы преобразовать один и тот же файл mov в mp4, он преобразуется отлично, и я могу воспроизвести его в IE9! miro converter также использует embedd ffmpeg внутри него, поэтому я уверен, что это только показатель правильной команды ffmpeg и параметров. В моем apache htaccess я задал правильные типы mime для своих файлов, и я вижу, что это действительно правильно при поиске в инструментах разработчика IE:

AddType audio/aac .aac
AddType audio/mp4 .mp4 .m4a
AddType audio/mpeg .mp1 .mp2 .mp3 .mpg .mpeg
AddType audio/ogg .oga .ogg
AddType audio/wav .wav
AddType audio/webm .webm

AddType video/mp4 .mp4 .m4v
AddType video/ogg .ogv
AddType video/webm .webm

Я борюсь с этим в течение долгого времени, поэтому любая помощь будет высоко оценена.

Спасибо!

Ответ 1

Для ffmpeg:

ffmpeg -i {input}.mov -vcodec h264 -acodec aac -strict -2 {output}.mp4

Вы также можете добавить параметр -q:v/-q:a, чтобы указать качество видео. Вы также можете использовать HandBrake, который является более простым кодировщиком, чем ffmpeg.

Для HandBrake:

handbrakecli -i {input}.mov -e x264 -E facc -o {output}.mp4

 

EDIT: Я нашел решение! Вот ZIP с рабочей демонстрацией, которую я тестировал в IE 9 и Firefox!

http://www.mediafire.com/download/kyavlpudybg0bc1/HTML5_video.zip

Кроме того, вышеприведенное демо имеет флеш-резерв, поэтому он должен работать на IE8 и меньше.

Используемая команда ffmpeg.
EDIT: мне пришлось повторно загрузить видео, так как мой хостинг пока не работает. Теперь он размещен на mediafire. Я нашел, что они лучшие службы обмена файлами. Минимальные объявления, без регистрации, без ожидания 30 секунд.

 

Также ознакомьтесь с этим обсуждением на веб-сайте videojs: http://help.videojs.com/discussions/problems/1020-ffmpeg-command-produce-your-demonstration-video.

ОЧЕНЬ ВАЖНО! Обязательно нажмите кнопку "Разрешить активное содержимое", чтобы разрешить видео при запуске локально!

Видео проблемы, которую я имею и мое решение: См. мою демонстрацию, упомянутую выше.

HTML-код, используемый во время тестирования:

<!DOCTYPE html>
<html>
<body>

<video width="320" height="240" controls>
  <source src="movie.mp4" type="video/mp4">
  <source src="movie.ogg" type="video/ogg">
  Your browser does not support the video tag.
</video>

</body>
</html>

Я проанализировал рабочее тестовое видео, которое предоставляет w3schools (он работает на IE), и я узнал, что они использовали HandBrake для кодирования видео.

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'movie.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: mp42isomavc1
    creation_time   : 2010-05-11 10:32:06
    encoder         : HandBrake 0.9.4 2009112300
  Duration: 00:00:12.61, start: 0.000000, bitrate: 202 kb/s
    Chapter #0.0: start 0.000000, end 12.612000
    Metadata:
      title           :
    Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 320x240, 80 kb/s, 29.65 fps, 29.97 tbr, 90k tbn, 59.31 tbc
    Metadata:
      creation_time   : 2010-05-11 10:32:06
    Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 115 kb/s
    Metadata:
      creation_time   : 2010-05-11 10:32:06
    Stream #0:2(und): Subtitle: mov_text (text / 0x74786574)
    Metadata:
      creation_time   : 2010-05-11 10:32:06`

Ответ 2

A Первичное путешествие в ffmpeg


Загрузите последнюю версию ffmpeg и ее пресеты http://www.ffmpeg.org/download.html

Следуйте инструкциям по установке двоичного файла Ffmpeg в Windows


Инструкция:

  • Получить последнюю сборку с страницы autobuilds arrozcru
  • Разархивируйте папку в папку C:/Program Files/ffmpeg
  • Добавить C:/Program Files/ffmpeg/bin в ваши системные переменные среды PATH

Дополнительная предварительная установка libx264:

Если вы используете пресеты libx264 (используя флаг -vpre), вам необходимо выполнить следующую настройку.

  • Создайте переменную среды HOME, чтобы ваш пользователь указывал на ваш домашний каталог. (например, для Vista/7/8 C:/Users/moose или для XP C:/Documents and Settings/moose)
  • Создайте папку .ffmpeg в своем домашнем каталоге
  • Скопируйте предварительно установленные файлы из C:/Program Files/ffmpeg/share/*. ffpreset в% HOME%/. ffmpeg
  • Теперь вы можете открыть командную строку и использовать ffmpeg.: D (например, это моя команда преобразования видео Vimeo. Ffmpeg -i input.mov -vcodec libx264 -vpre hq -crf 24 -g 25 -acodec libmp3lame -ab 192k -ar 44100 output.mp4)
    * ПРИМЕЧАНИЕ: libfaac не входит в сборку, так как libfaac считается несвободным плагином

Не забудьте установить переменную окружения HOME в окнах

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

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

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

Для webm (VP8/Vorbis):

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

Для ogv (Theora/Vorbis):

ffmpeg -i "INPUTFILE" -b 1500k -vcodec libtheora -acodec libvorbis -ab 160000 -g 30 "OUTPUTFILE.ogv"

Ответ 3

from orig link...

WebM полностью поддерживается в ffmpeg 0.6 и более поздних версиях. В командной строке запустите ffmpeg без параметров и убедитесь, что он был скомпилирован с поддержкой VP8:

[email protected]$ ffmpeg
FFmpeg version SVN-r23197, Copyright (c) 2000-2010 the FFmpeg developers
built on May 19 2010 22:32:20 with gcc 4.4.3
configuration: --enable-gpl --enable-version3 --enable-nonfree --enable-postproc 
--enable-pthreads --enable-libfaac --enable-libfaad --enable-libmp3lame 
--enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora 
--enable-libx264 --enable-libxvid --enable-x11grab --enable-libvorbis 
--enable-libvpx

Если вы не видите волшебные слова "--enable-libvorbis" и "--enable-libvpx", у вас нет правильной версии ffmpeg. (Если вы скомпилировали ffmpeg самостоятельно, проверьте, есть ли у вас две версии. Thats fine, они не будут конфликтовать друг с другом. Вам просто нужно использовать полный путь к версии ffmpeg с поддержкой VP8.)

Я собираюсь сделать двухпроходный код. Пасс 1 просто просматривает входной видеофайл (-i pr6.dv) и записывает некоторые статистические данные в файл журнала (который будет автоматически назван pr6.dv-0.log). Я указываю видеокодек с параметром -vcodec:

[email protected]$ ffmpeg -pass 1 -passlogfile pr6.dv -threads 16  -keyint_min 0 -g 250 -skip_threshold 0 -qmin 1 -qmax 51 -i pr6.dv -vcodec libvpx -b 614400 -s 320x240 -aspect 4:3 -an -y NUL

Большая часть командной строки ffmpeg не имеет ничего общего с VP8 или WebM. libvpx поддерживает несколько специфичных для VP8 опций, которые вы можете передать ffmpeg, но я еще не знаю, как они работают. Как только я нахожу хорошее объяснение им, я свяжу его здесь и включу в повествование, если это стоит того сделать.

Для второго прохода ffmpeg будет читать статистику, которую он написал во время первого прохода, и фактически делать кодировку видео и аудио. Он выпишет файл .webm.

[email protected]$ ffmpeg -pass 2 -passlogfile pr6.dv -threads 16  -keyint_min 0 -g 250 -skip_threshold 0 -qmin 1 -qmax 51 -i pr6.dv -vcodec libvpx -b 614400 -s 320x240 -aspect 4:3 -acodec libvorbis -y pr6.webm

Здесь есть пять важных параметров:

  • -vcodec libvpx указывает, что кодирование с помощью Видеокодек VP8. WebM всегда использует видео VP8.
  • -b 614400 указывает битрайт. В отличие от других форматов, libvpx ожидает битрейт в реальных битах, а не в килобитах. Если ты хочешь видео 600 Кбит/с, умножьте 600 на 1024, чтобы получить 614400.
  • -s 320x240 задает размер цели, ширину по высоте.
  • -aspect 4:3 указывает соотношение сторон видео. Видео стандартной четкости обычно 4: 3, но большинство изображений высокой четкости видео - 16: 9 или 16:10. В ходе тестирования я обнаружил, что должен был указать это явно в командной строке, вместо того чтобы полагаться на ffmpeg to автоопределить его.
  • -acodec libvorbis указывает, что кодирование с помощью Аудио кодек Vorbis. WebM всегда использует звук Vorbis.

Ответ 4

Я потратил много часов, пытаясь понять это. Я наконец нашел, как это сделать правильно, используя avconv (или ffmpeg)

  • Преобразование видео в MPEG4 с использованием кодека H.264. Вам не нужно ничего интересного, просто дайте avconv выполнить эту работу за вас:

    avconv -i video.mp4 -vcodec libx264 pre_out.mp4
    
  • Переместите информацию о файле в заголовок файла, чтобы браузер начал воспроизводить его, как только он начнет его загружать. ЭТО КЛЮЧ ДЛЯ IE9!!!

    qt-faststart pre_out.mp4 out.mp4
    

qt-faststart - это утилиты Quicktime, которые также поддерживают формат файла H.264/ACC. Это часть пакета libav-tools.

Ответ 5

Моей проблемой было форматирование пикселей.

Добавление -pix_fmt yuv420p исправлено в IE для меня.

Ответ 6

Имел ту же проблему некоторое время назад, и я успешно решил таким образом:

Сначала загрузите последнюю версию ffmpeg (или создайте из официального репозитория github (https://github.com/FFmpeg/FFmpeg), если вы хотите сделать некоторые экспериментирование).

Затем попробуйте следующее:

ffmpeg -i input.mov -c:v libx264 -c:a libfaac -strict experimental output.mp4

Надеюсь, это поможет!