Ich muss ein kurzes Video in einem Format codieren, das mit Windows Media Player unter Windows XP abgespielt werden kann, ohne dass zusätzliche Codecs installiert werden müssen. Für den Umkodierungsprozess verwende ich ffmpeg.
Ich habe den msmpeg4v2
Codec bereits ausprobiert, aber die Qualität ist schrecklich (im Vergleich zum Originalvideo sieht man große "Blöcke"), also suche ich nach anderen Codecs, die sofort funktionieren und mindestens "in Ordnung" sind.
Da Kommentare darauf hinwiesen, dass es sich möglicherweise nicht um den Codec, sondern um ein Bitratenproblem handelt, habe ich den folgenden Befehl verwendet:
ffmpeg -i x.flv -vcodec msmpeg4v2 -acodec adpcm_ima_wav x.avi
Ausgabe:
Input #0, flv, from 'x.flv':
Metadata:
moovPosition : 39337765
avcprofile : 100
avclevel : 30
aacaot : 2
videoframerate : 25
audiochannels : 2
Duration: 00:06:19.52, start: 0.000000, bitrate: 836 kb/s
Stream #0:0: Video: h264 (High), yuv420p, 702x396 [SAR 2596:3679 DAR 354:283], 25 tbr, 1k tbn, 50 tbc
Stream #0:1: Audio: aac, 48000 Hz, stereo, s16
w:702 h:396 pixfmt:yuv420p tb:1/1000000 sar:2596/3679 sws_param:
Output #0, avi, to 'x.avi':
Metadata:
moovPosition : 39337765
avcprofile : 100
avclevel : 30
aacaot : 2
videoframerate : 25
audiochannels : 2
ISFT : Lavf53.32.100
Stream #0:0: Video: msmpeg4v2 (MP42 / 0x3234504D), yuv420p, 702x396 [SAR 2596:3679 DAR 354:283], q=2-31, 200 kb/s, 25 tbn, 25 tbc
Stream #0:1: Audio: adpcm_ima_wav ([17][0][0][0] / 0x0011), 48000 Hz, stereo, s16, 384 kb/s
Stream mapping:
Stream #0:0 -> #0:0 (h264 -> msmpeg4v2)
Stream #0:1 -> #0:1 (aac -> adpcm_ima_wav)
Press [q] to stop, [?] for help
frame= 9485 fps=436 q=31.0 Lsize= 31197kB time=00:06:19.48 bitrate= 673.5kbits/s
video:12628kB audio:17913kB global headers:0kB muxing overhead 2.149820%
ffmpeg
codec
video-codecs
Diebesmeister
quelle
quelle
Antworten:
Da Sie nichts anderes angeben, ist Ihr Videostream auf die Verwendung eingestellt
q=2-31, 200 kb/s
. Es ergibt sich im673.5kbits
Durchschnitt nicht viel, jedenfalls nicht für Nicht-h.264-Codecs.Versuchen Sie es zu erzwingen
-b:v 1000K
zum Beispiel. Mit älteren FFmpeg-Versionen können Sie nur verwenden-b
.-qscale 2
zum Beispiel. Hier kann der Wert im Bereich von 1 bis 31 liegen. Normale Werte fürqscale
liegen im Bereich von 2 bis 5 oder so. Versuchen Sie einfach, das beste Ergebnis zu erzielen.Die Codecs, die unter Windows standardmäßig wirklich unterstützt werden, sind folgende :
Weitere Informationen finden Sie auch unter Multimedia-Dateitypen, die Windows Media Player unterstützt .
Mit FFmpeg können Sie
mpeg1video
(MPEG-1) odermpeg2video
(MPEG-2) odermsmpeg4
(MPEG-4 Part II) ausprobieren , aber ich bin mir nicht sicher, ob letzteres überhaupt universell unterstützt wird. Wenn Sie auf Nummer sicher gehen möchten, müssen Sie MPEG-1 oder MPEG-2 verwenden.quelle
Ich hatte ein ähnliches Problem mit einer aac / h264 .mp4-Datei, die ursprünglich in Windows Media Player (Windows 7) einwandfrei abgespielt wurde. Nachdem ich in VirtualDub bearbeitet und im .avi-Format gespeichert und dann mit den ffmpeg-Standardeinstellungen wieder in aac / h264 .mp4 konvertiert habe, wurde es in Windows Media Player nicht mehr wiedergegeben.
Beim Vergleichen der Original- und der endgültigen Datei mit MediaInfo stellte ich fest, dass ein anderes Kodierungsprofil verwendet wurde und unterschiedliche Einstellungen für das Chroma-Subsampling (4: 2: 0, final 4: 4: 4). Durch erneutes Codieren mit ffmpeg mit der folgenden Option konnte WMP die Datei korrekt wiedergeben:
quelle
-pix_fmt yuv420p
und Unterstützung dieser Idee erwähnt wird.-pix_fmt yuv420p
ich die mp4 in Microsoft-Anwendungen (sowohl den eingebauten Player als auch den Movie Maker) öffnen.Das FFMPEG-Wiki empfiehlt Folgendes :
quelle
Da beide Codecs bereits vom AVI-Container unterstützt werden, könnten Sie genau das tun
Das setzt voraus, dass dein XP h.264 unterstützt, ansonsten würde ich mit einer WMV-Datei, dem gleichen Quantisierer, arbeiten und ffmpeg die Codecs ausfüllen lassen. Dadurch erhalten Sie eine nahezu identische Qualität wie beim Original:
quelle
-sameq
sollte nicht zum Konvertieren von Formaten verwendet werden, die keine ähnliche Quantisierungsskala aufweisen. Diese Option bedeutet nicht "dieselbe Qualität" wie die verwendete Dokumentation. Außerdem wird H.264 in AVI nicht empfohlen (obwohl verlustfreies H.264 [keine B-Frames] in Ordnung sein sollte).