跳转到内容

FFMPEG 中级指南/WMV

来自维基教科书,开放的书籍,开放的世界

Windows Media VideoWindows Media Audio 编解码器是 高级系统格式 的主要组成部分,微软试图在推出时找到市场上领先的编解码器。虽然这两个编解码器随着时间的推移都被超越了,但 WMV 仍然是 YouTube 上传文件的可接受格式,像 FFmpeg 这样的项目能够将其编码为早期版本。这种格式及其背景与微软之前的 AVI 格式形成对比,微软旨在推动新颖的编解码器开发。当时,此举导致不同系统之间发生冲突,因此随着 ASF 的开发,微软转而采用了当时领先的视频和音频编解码器。包含这些编解码器的因素由以下几点决定:a)编码速度,b)解码时系统的性能,以及 c)最终的质量。

需要注意的是,使用未经微软授权的软件将任何材料编码为 ASF 违反 了他们的专利权。[1] 当 Xiph 等组织允许使用其格式时,微软在 2000 年效仿了 Fraunhofer,要求一位反向工程该格式的开发人员停止开发。该软件名为 VirtualDub,作者在不久后就遵守了要求。

因此,如果你必须使用 FFmpeg 编码为 ASF,请不要发布你的最终材料。如果可能的话,使用其他编解码器。

使用 FFmpeg 处理 WMV

[编辑 | 编辑源代码]

使用 WMV 输入

[编辑 | 编辑源代码]

你可以通过执行以下命令来流复制无法由 FFmpeg 编码的编解码器

ffmpeg -i input -vcodec copy -acodec copy output

这将同时复制视频 (vcodec) 和音频 (acodec)。

使用其他输入

[编辑 | 编辑源代码]

对于支持的编码器,你可以执行

ffmpeg -i input -b 1500k -vcodec wmv2 -acodec wmav2 output

请注意 -b 标记。对于大多数 480p 视频,输出略微像素化,但仍然易于观看。这将创建 Windows Media Video 8 视频和音频文件流,因为 Windows Media Video 9 的编码器尚未完全正常工作。[2]

确保包含 -acodec 标记,否则默认值将不是 wmav2,也不会包含在输出视频中。如果输入音频拥有超过两个通道(比如环绕声),编码器无法处理更多通道,将会抛出 "通道过多" 错误。使用 -ac 标记手动将通道数设置为 2。

参考文献

[编辑 | 编辑源代码]
  1. 常见问题解答,Windows 支持哪些编解码器?FFmpeg。“注意,ASF 文件通常在 Windows 中拥有 .wmv 或 .wma 扩展名。还应注意,微软声称对 ASF 格式拥有专利,并可能起诉或威胁使用非微软软件创建 ASF 文件的用户。强烈建议尽可能避免使用 ASF。” 于 2017 年 9 月 30 日访问。
  2. 通用文档,支持的文件格式、编解码器或功能。FFmpeg。查看条目 "Windows Media Video 9"。“尚未完全正常工作”。于 2017 年 9 月 30 日访问。
华夏公益教科书