下面的命令执行没有错误。
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
它使用自己的libavcodec和libav格式库进行编码和解码。因此,生成的视频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/.asfmsmpeg4
、仅限 .asfwmv1
、仅限 .asfwmv2
仅限 .asfmpeg4
, 仅当您安装了一些 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