我如何告诉 ffmpeg 转码为 Windows Media Player 支持的视频编解码器?

我如何告诉 ffmpeg 转码为 Windows Media Player 支持的视频编解码器?

下面的命令执行没有错误。

ffmpeg -i thevideo.mkv outvideo.avi

随后尝试在 Windows Media Player 中播放 outvideo.avi 时出现此错误

You may need an additional video decoder to play this file.

This file contains a track in an unknown format (code "ARGB") format. You may need to     
install a DirectShow decoder for this video format in order to play this file.

Windows Media Player 提供的错误详细信息表明播放视频需要 mpg2 编解码器。如何告诉 ffmpeg 转码为 Windows Media Player 支持的视频编解码器?

答案1

你不能,因为ffmpeg它本身不知道你的系统上安装了哪些编解码器,并且 Windows Media Player 可以使用哪些编解码器。这是因为ffmpeg它使用自己的libavcodeclibav格式库进行编码和解码。因此,生成的视频ffmpeg不一定能在 Windows Media Player 中播放。


解决方案 1:安装其他编解码器

您可能需要安装此视频格式的 DirectShow 解码器才能播放此文件。

这是你最终必须做的,因为 Windows 并未附带所有可能的编解码器。事实上,直到 Windows 7 版本都几乎没有附带任何额外的编解码器,需要用户安装编解码器包,例如K-Lite或者中央控制协议。但是,你不能假设每台电脑都安装了这些,你可能需要使用 VLC 等媒体播放器来播放视频,它提供自己的编解码器,不依赖于 Windows

不过,您可能应该在每台新的 Windows 机器上安装额外的多媒体编解码器。


解决方案 2:转换为 WMP 播放的编解码器

根据有关 Windows Media Player 支持的多媒体文件类型的信息,有些格式是原生支持的,但并没有特别说明。如果你想要安全起见,你应该转换成 Windows Media Video (wmv)。对于其他格式,微软是这样说的:

使用各种编解码器压缩的音频内容或视频内容可以存储在 .avi 文件中,并在 Windows Media Player 中播放,如果计算机上安装了适当的编解码器.avi 文件中经常使用的视频编解码器包括以下编解码器 [...]

ffmpeg 的常见问题解答更具体一点。他们说:

Windows 支持哪些编解码器?

以下视频编解码器列表应适用于大多数 Windows 系统:

  • msmpeg4v2、.avi/.asf
  • msmpeg4、仅限 .asf
  • wmv1、仅限 .asf
  • wmv2仅限 .asf
  • mpeg4, 仅当您安装了一些 MPEG-4 编解码器(例如 ffdshow 或 Xvid)时才如此。
  • mpeg1video、仅限 .mpg

请注意,Windows 中的 ASF 文件通常具有 .wmv 或 .wma 扩展名。还应指出,Microsoft 已申请 ASF 格式的专利,可能会起诉或威胁使用非 Microsoft 软件创建 ASF 文件的用户。强烈建议尽可能避免使用 ASF。

以下音频编解码器列表应适用于大多数 Windows 系统:

  • adpcm_ima_wav
  • adpcm_ms
  • pcm_s16le, 总是
  • libmp3lame, 如果安装了一些 MP3 编解码器,例如 LAME。

因此,在转换时,您可以分别使用视频和音频的-vcodec和选项指定要使用的编解码器。-acodec

例如:

ffmpeg -i input.mp4 -vcodec msmpeg4v2 -acodec pcm_s16le output.avi

请注意,这是使用未压缩的音频,因为您不能确定 Windows 将支持哪种音频编解码器。如果幸运的话,您可以尝试 MP3(它应该适用于大多数新机器),然后使用该libmp3lame选项。

答案2

尝试这个

C:\>ffmpeg -i yourvideofile.xyz -acodec mp2 -vcodec mpeg1video h.mpg

然后在 WMP 中播放输出文件 h.mpg,希望能够工作!

这会将其转换为 MPEG 容器格式,其中音频编解码器为 MP2,视频编解码器为 MPEG1。

WMP 应该支持这种组合。

没有必要混淆这三件事。你可以下载 mediainfo 来从任何视频文件中找出这类信息。mediainfo 的 CLI 版本非常清晰
http://mediainfo.sourceforge.net/en/Download/Windows

相关内容