哪些编解码器最适合在 Windows XP 上使用 Windows Media Player 播放?

哪些编解码器最适合在 Windows XP 上使用 Windows Media Player 播放?

我需要将一段短视频编码为可以在 Windows XP 上使用 Windows Media Player 播放的格式,而无需安装任何其他编解码器。对于重新编码过程,我使用 ffmpeg。

我已经尝试过该msmpeg4v2编解码器,但质量太差(与原始视频相比,您会看到大块“块”),所以我正在寻找其他可立即使用且至少具有“还可以”质量的编解码器。

由于评论表明这可能不是编解码器的问题而是比特率问题,所以这是我使用的命令:

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%

答案1

由于您没有指定任何其他内容,因此您的视频流设置为使用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 Audio、Windows Media Video 和 MP3。

另请参阅Windows Media Player 支持的多媒体文件类型了解更多信息。

使用 FFmpeg,您可以尝试mpeg1video(MPEG-1) 或mpeg2video(MPEG-2),或msmpeg4(MPEG-4 Part II),但我不确定后者是否得到普遍支持。如果您想稳妥行事,您就必须使用 MPEG-1 或 MPEG-2。

答案2

我遇到了类似的问题,aac/h264 .mp4 文件原本可以在 Windows Media Player(Windows 7)中播放。我在 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

答案3

FFMPEG wiki 建议以下内容

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

答案4

由于 AVI 容器已经支持这两种编解码器,因此你可以这样做

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

假设您的 XP 支持 h.264,否则我会使用 wmv 文件、相同的量化器,并让 ffmpeg 填写编解码器。这应该会给您提供与原始文件几乎相同的质量:

ffmpeg -i x.flv -sameq x.wmv

相关内容