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!
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
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`
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:
Optionale Voreinstellung für libx264:
Wenn Sie libx264-Voreinstellungen verwenden (mit dem Flag -vpre), müssen Sie die folgenden Einstellungen vornehmen.
Denken Sie daran, die Umgebungsvariable HOME in Windows einzustellen.
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"
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.Mein Problem war die Pixelformatierung.
Durch Hinzufügen von -pix_fmt yuv420p
wurde es in IE für mich behoben.
Ich habe viele Stunden damit verbracht, das herauszufinden. Endlich habe ich herausgefunden, wie man das mit avconv (oder ffmpeg) richtig macht.
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
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.
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!