it-swarm.com.de

ffmpeg konvertiert mov-Datei in mp4 für den HTML5-Videotag IE9

Ich habe überall hier und bei Google nachgesehen - es gibt keinen gültigen Befehl, der für IE9 funktioniert. Irgendwie fehlt IE9 etwas. Alles was ich ausprobiert habe, funktionierte überall: Chrom, Safari, mobiles Gerät usw. Ich möchte einen Befehl, der es konvertieren wird, und ich kann es in jedem Gerät verwenden, das MP4 im HTML5-Video-Tag unterstützen soll.

Ich benutze diese Befehle:

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

etc .. wieder alle diese Befehle erzeugen eine gültige mp4-Datei, die auf Chrome, Safari usw. funktioniert und auch funktioniert, wenn ich sie mit Windows Media Player in Windows selbst starte. Wenn ich diese Datei in das Video-Tag stecke ( Ich verwende http://videojs.com/ ) in IE9 funktioniert es nicht!

<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>

Wenn ich die Software miro video converter verwende, um die gleiche mov-Datei in mp4 zu konvertieren, ist sie gut konvertiert und ich kann sie in IE9! Abspielen..... Der miro converter verwendet auch embedd ffmpeg ein metter des rechten ffmpeg-Befehls und der richtigen Parameter . In meinem Apache htaccess stelle ich die richtigen Mime-Typen für meine Dateien ein und sehe es in der Tat richtig, wenn ich in IE Entwickler-Tools schaue:

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

Ich habe lange damit zu kämpfen, daher wäre jede Hilfe sehr dankbar.

Vielen Dank!

48
Adidi

Für ffmpeg:

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

Sie können auch den Parameter -q:v/-q:a hinzufügen, um die Qualität des Videos festzulegen. Sie können auch Handbrake verwenden, die einen einfacheren Encoder als ffmpeg darstellt.

Für HandBrake:

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

EDIT: Ich habe die Lösung gefunden! Hier ist ein Zip mit einer funktionierenden Demo, die ich auf IE 9 und Firefox getestet habe!

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

Die obige Demo hat auch einen Flash-Fallback, also sollte sie auf IE8 und weniger funktionieren.

Der gleiche ffmpeg-Befehl wird verwendet.
EDIT: Ich musste das Video erneut hochladen, da mein Hosting-Service vorerst nicht verfügbar ist. Jetzt wird es bei mediafire gehostet. Ich fand, dass sie der beste Filesharing-Dienst sind. Mindestanzeigen, keine Registrierung, keine Wartezeit von 30 Sekunden.

Schauen Sie sich diese Diskussion auch auf der videojs-Website an:  http://help.videojs.com/discussions/problems/1020-ffmpeg-command-produce-your-demonstration-video .

SEHR WICHTIG! Klicken Sie auf die Schaltfläche "Allow Active Content", um das Video bei lokaler Ausführung zuzulassen!

Video des Problems und meiner Lösung: Siehe meine oben erwähnte Demo.

Beim Testen verwendeter HTML-Code:

<!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>

Ich habe ein funktionierendes Testvideo analysiert, das von w3schools bereitgestellt wird (es funktioniert im IE), und ich habe herausgefunden, dass sie HandBrake zum Kodieren des Videos verwendet haben.

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`
91
MDTech.us_MAN

Eine Primärreise nach ffmpeg


Laden Sie das neueste ffmpeg und seine Voreinstellungen herunter http://www.ffmpeg.org/download.html

Befolgen Sie die Anweisungen zur Installation von Ffmpeg Binary in Windows.


Anweisungen:

  1. Holen Sie sich den neuesten Build von der Arrozcru-Seite für Autobuilds 
  2. Entpacken Sie den Ordner in C:/Programme/ffmpeg 
  3. Fügen Sie der PATH-Umgebungsvariablen Ihres Systems C:/Program Files/ffmpeg/bin hinzu 

Optionale Voreinstellung für libx264: 

Wenn Sie libx264-Voreinstellungen verwenden (mit dem Flag -vpre), müssen Sie die folgenden Einstellungen vornehmen. 

  1. Erstellen Sie eine HOME-Umgebungsvariable für Ihren Benutzer, die auf Ihr Basisverzeichnis verweist. (z. B. für Vista/7/8 C:/Benutzer/Elch oder für XP C:/Dokumente und Einstellungen/Elch) 
  2. Erstellen Sie einen .ffmpeg-Ordner in Ihrem Basisverzeichnis 
  3. Kopieren Sie die voreingestellten Dateien von C:/Programme/ffmpeg/share/*. Ffpreset nach% HOME% /. Ffmpeg 
  4. Jetzt können Sie eine Eingabeaufforderung öffnen und ffmpeg verwenden. : D (beispielsweise Dies ist mein Vimeo-Videokonvertierungsbefehl. Ffmpeg -i input.mov -vcodec libx264 -vpre hq -crf 24 -g 25 -acodec libmp3lame -ab 192k -ar 44100 output.mp4) 
    * HINWEIS: libfaac ist nicht im Build enthalten, da libfaac als nicht-freies Plugin betrachtet wird 

Denken Sie daran, die Umgebungsvariable HOME in Windows einzustellen.

  1. Kopieren Sie die Voreinstellungen unter dem Ordner für Umgebungsvariablen 
  2. Sie müssen die folgenden Befehle verwenden, um mit ffmpeg zu konvertieren: 

Für mp4 (H.264/ACC):

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

Für webm (VP8/Vorbis):

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

Für ogv (Theora/Vorbis):

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

von orig link ...

WebM wird in ffmpeg 0.6 und höher vollständig unterstützt. Führen Sie in der Befehlszeile ffmpeg ohne Parameter aus und stellen Sie sicher, dass es mit VP8-Unterstützung kompiliert wurde:

[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

Wenn Sie die Zauberwörter "--enable-libvorbis" und "--enable-libvpx" nicht sehen, haben Sie nicht die richtige Version von ffmpeg. (Wenn Sie ffmpeg selbst kompiliert haben, überprüfen Sie, ob Sie zwei Versionen installiert haben. Das ist in Ordnung, sie stehen nicht miteinander in Konflikt. Sie müssen nur den vollständigen Pfad der VP8-fähigen Version von ffmpeg verwenden.)

Ich werde eine Zwei-Pass-Kodierung durchführen. Bei Pass 1 wird nur die Eingabevideodatei (-i pr6.dv) gescannt und einige Statistiken in eine Protokolldatei geschrieben (die automatisch den Namen pr6.dv-0.log hat). Ich gebe den Video-Codec mit dem Parameter -vcodec an:

[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

Die meisten ffmpeg-Befehlszeilen haben nichts mit VP8 oder WebM zu tun. libvpx unterstützt eine Reihe von VP8-spezifischen Optionen, die Sie an ffmpeg übergeben können, aber ich weiß noch nicht, wie die einzelnen Optionen funktionieren. Sobald ich eine gute Erklärung für sie gefunden habe, werde ich sie hier verlinken und sie in die Erzählung integrieren, wenn es sich lohnt.

Für den zweiten Durchgang liest ffmpeg die Statistiken, die es während des ersten Durchlaufs geschrieben hat, und übernimmt die Kodierung des Videos und des Audios. Es wird eine .webm-Datei geschrieben.

[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

Hier gibt es fünf wichtige Parameter:

  • -vcodec libvpx gibt an, dass wir mit dem VP8-Videocodec codieren. WebM verwendet immer VP8-Video.
  • -b 614400 gibt die Bitrate an. Im Gegensatz zu anderen Formaten erwartet Libvpx die Bitrate in tatsächlichen Bits und nicht in Kilobits. Wenn Sie ein 600-kbps-Video wünschen, multiplizieren Sie 600 mit 1024, um 614400 zu erhalten.
  • -s 320x240 gibt die Zielgröße in Breite und Höhe an.
  • -aspect 4:3 gibt das Seitenverhältnis des Videos an . Videos in Standardauflösung sind normalerweise 4: 3, aber die meisten High-Definition-Videos sind 16: 9 oder 16:10. Bei meinen Tests habe ich festgestellt, dass ich Explizit in der Befehlszeile angeben musste, anstatt sich auf ffmpeg zu verlassen, um Autodetect.
  • -acodec libvorbis gibt an, dass wir mit dem Audiocodec Vorbis codieren. WebM verwendet immer Vorbis-Audio.
4
Robert Rowntree

Mein Problem war die Pixelformatierung.

Durch Hinzufügen von -pix_fmt yuv420p wurde es in IE für mich behoben.

1
max kaplan

Ich habe viele Stunden damit verbracht, das herauszufinden. Endlich habe ich herausgefunden, wie man das mit avconv (oder ffmpeg) richtig macht.

  1. Konvertieren Sie das Video mithilfe des H.264-Codecs in MPEG4. Sie brauchen nichts Besonderes, lassen Sie einfach avconv die Arbeit für Sie erledigen:

    avconv -i video.mp4 -vcodec libx264 pre_out.mp4
    
  2. Verschieben Sie die Dateiinformationen in den Dateiheader, damit der Browser die Wiedergabe starten kann, sobald der Download beginnt. DIESER IS DER SCHLÜSSEL FÜR IE9 !!!

    qt-faststart pre_out.mp4 out.mp4
    

qt-faststart ist ein Quicktime-Dienstprogramm, das auch das H.264/ACC-Dateiformat unterstützt. Es ist Teil des libav-tools-Pakets.

1
Gael Lafond

Hatte vor einer Weile dasselbe Problem, und ich habe es so erfolgreich gelöst:

Laden Sie zunächst die neueste Version von ffmpeg herunter (oder erstellen Sie sie aus dem offiziellen github-Repository ( https://github.com/FFmpeg/FFmpeg ), wenn Sie etwas experimentieren möchten.

Dann probiere es aus:

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

Hoffe, das wird helfen!

0
enzo.rivello