Welche Codecs eignen sich am besten für die Wiedergabe mit Windows Media Player unter Windows XP?

16

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 msmpeg4v2Codec 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%
Diebesmeister
quelle
3
Vielleicht liegt das Problem an deiner Bitrate, nicht an deinem Codec. Der bevorzugte Codec für Windows-Systeme ist höchstwahrscheinlich eine Art WMV .
Der Hochstapler
In meiner Antwort finden Sie einen Link zu den offiziellen Microsoft-FAQ. Aber im Grunde bleibt man bei Windows Media Video - das FFmpeg nicht produzieren wird. Also entweder das oder die, die du ausprobiert hast. Versuchen Sie, wie @Oliver bereits sagte, eine höhere Bitrate oder Qualitätseinstellung. Ich nehme an, es wird nur die Standardeinstellung verwendet.
Slhck
Der Vorteil des MPEG-Codecs ist nicht die Größe, sondern die Tatsache, dass es sich nicht um einen AVI-Container handelt und dass es sich um eine streambasierte Datei handelt, die über einen Hardware-Encoder aufgezeichnet werden kann, der auf DVD-Medien für Standalone-Player verwendet wird. und es kann leicht bearbeitet werden. Um ganz klar zu sein, fragen Sie nach einem Filmformat, das Sie mit FFMPEG codieren können und das eine für Sie angenehme Größe erzeugt und mit Windows Media Player ohne zusätzliche Downloads funktioniert. Richtig?
Bon Gart
Ja. WMV ist auch in Ordnung. Dort bekomme ich die gleiche Qualität - vielleicht stimmt ja was mit der Bitrate nicht.
ThiefMaster

Antworten:

12

Da Sie nichts anderes angeben, ist Ihr Videostream auf die Verwendung eingestellt q=2-31, 200 kb/s. Es ergibt sich im 673.5kbitsDurchschnitt nicht viel, jedenfalls nicht für Nicht-h.264-Codecs.

Versuchen Sie es zu erzwingen

  • eine bestimmte Bitrate mit -b:v 1000Kzum Beispiel. Mit älteren FFmpeg-Versionen können Sie nur verwenden -b.
  • ein festes Qualitätsniveau mit -qscale 2zum Beispiel. Hier kann der Wert im Bereich von 1 bis 31 liegen. Normale Werte für qscaleliegen 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 :

Heutzutage werden Hunderte von Audio- und Video-Codecs verwendet. Einige wurden von Microsoft erstellt, aber die überwiegende Mehrheit der Codecs wurde von anderen Unternehmen, Organisationen oder Einzelpersonen erstellt. Standardmäßig enthalten das Windows-Betriebssystem und der Player eine Reihe der beliebtesten Codecs, z. B. Windows Media Audio, Windows Media Video und MP3.

Weitere Informationen finden Sie auch unter Multimedia-Dateitypen, die Windows Media Player unterstützt .

Mit FFmpeg können Sie mpeg1video(MPEG-1) oder mpeg2video(MPEG-2) oder msmpeg4(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.

slhck
quelle
ja ... das war eine ziemlich niedrige bitrate für eine mpeg datei.
Bon Gart
Heh. Ich muss sagen, wir sind heutzutage wirklich mit h.264 gesegnet.
Slhck
vor allem, wenn man bedenkt, dass man 2 gute Stunden lang 4k bis 5k auf einer DVD betrachtet (Sie können natürlich auch höher gehen, aber das lässt mir immer einen schönen Spielraum für die Aufnahme einer AVI-Datei und von Bildern und so weiter)
Bon Gart
7

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:

ffmpeg  -i edited.avi -pix_fmt yuv420p fixed.mp4
Annihilannic
quelle
1
Siehe trac.ffmpeg.org/wiki/Encode/H.264#Encodingfordumbplayers, in dem die Verwendung -pix_fmt yuv420pund Unterstützung dieser Idee erwähnt wird.
Benutzer
Ich habe dies gerade unter Windows 10 getestet. Durch Hinzufügen konnte -pix_fmt yuv420pich die mp4 in Microsoft-Anwendungen (sowohl den eingebauten Player als auch den Movie Maker) öffnen.
Nux
0

Da beide Codecs bereits vom AVI-Container unterstützt werden, könnten Sie genau das tun

ffmpeg -i x.flv -vcodec copy -acodec copy x.avi

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:

ffmpeg -i x.flv -sameq x.wmv
Justin Buser
quelle
2
Ich bezweifle irgendwie, dass normales XP h.264
ThiefMaster 13.06.12
2
-sameqsollte 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).
Logan