web-dev-qa-db-ja.com

Windows XPのWindows Media Playerでの再生に最適なコーデックはどれですか。

追加のコーデックをインストールせずに、Windows XPのWindows Media Playerで再生できる形式で短いビデオをエンコードする必要があります。再コーディングプロセスでは、ffmpegを使用しています。

私はすでに試しましたmsmpeg4v2コーデックですが、品質がひどいので(大きな「ブロック」が表示される元のビデオと比較して)、そのままで機能し、少なくとも「OK」の品質を持つ他のコーデックを探しています。

コメントはそれがコーデックではなくビットレートの問題であるかもしれないことを示したので、これが私が使ったコマンドです:

ffmpeg -i x.flv -vcodec msmpeg4v2 -acodec adpcm_ima_wav x.avi

出力:

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%
16
ThiefMaster

他には何も指定しないため、ビデオストリームはq=2-31, 200 kb/sを使用するように設定されています。結果は673.5kbits平均になりますが、少なくともh.264以外のコーデックでは、それほど多くありません。

強制してみる

  • たとえば、-b:v 1000Kの特定のビットレート。古いFFmpegバージョンでは、-bのみを使用できます。
  • -qscale 2などの固定品質レベル。ここでは、値の範囲は1〜31です。qscaleの正しい値の範囲は2〜5程度です。何が最良の結果をもたらすか試してみてください。

デフォルトでWindowsで実際にサポートされているコーデック これらは

現在、数百のオーディオおよびビデオコーデックが使用されています。一部はMicrosoftによって作成されましたが、コーデックの大部分は他の会社、組織、または個人によって作成されました。既定では、Windowsオペレーティングシステムとプレーヤーには、Windows Mediaオーディオ、Windows Mediaビデオ、MP3など、最も一般的なコーデックが多数含まれています。

詳細については Windows Media Playerがサポートするマルチメディアファイルタイプ も参照してください。

FFmpegでは、mpeg1video(MPEG-1)またはmpeg2video(MPEG-2)、またはmsmpeg4(MPEG-4 Part II)を試すことができますが、後者も普遍的にサポートされています。安全に再生したい場合は、MPEG-1またはMPEG-2を使用する必要があります。

12
slhck

Windows Media Player(Windows 7)で元々問題なく再生されたaac/h264 .mp4ファイルでも同様の問題がありました。 VirtualDubで編集して.avi形式で保存し、ffmpegのデフォルトを使用してaac/h264 .mp4に変換すると、Windows Media Playerで再生できなくなりました。

MediaInfoを使用して元のファイルと最終的なファイルを比較すると、異なるエンコーディングプロファイルが使用されており、異なるクロマサブサンプリング設定(4:2:0、最終4:4:4)に気づきました。次のオプションを使用してffmpegで再エンコードすることにより、WMPはファイルを正しく再生できました。

ffmpeg  -i edited.avi -pix_fmt yuv420p fixed.mp4
7
Annihilannic

FFMPEG wikiは以下を推奨しています

ffmpeg -r 30 -i foo.flv -codec:v mpeg4 -flags:v +qscale -global_quality:v 0 -codec:a libmp3lame foo.avi
2
Iain

両方のコーデックはすでにAVIコンテナでサポートされているので、

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

これは、XPがh.264をサポートしていることを前提としています。それ以外の場合は、同じ量子化器のwmvファイルを使用し、ffmpegにコーデックを入力させます。これにより、オリジナルとほぼ同じ品質が得られます。

ffmpeg -i x.flv -sameq x.wmv
0
Justin Buser