我有一部带有视频流和音频流的 MP4 电影。
我想要的输出是一个包含以下内容的 MP4 文件:
- 相同的视频流
- 相同的音频流
- 比特率较低的相同视频流
谁能告诉我适当的 ffmpeg 命令?
答案1
原则上,它是这样做的。编码为低比特率,没有音频。当然,这假设您有 H.264 视频。检查编码指南了解更多信息。
ffmpeg -i input.mp4 -c:v libx264 -b:v 700k -an lower.mp4
然后,合并您的文件:
ffmpeg -i input.mp4 -i lower.mp4 -c copy -map 0:v -map 0:a -map 1:v output.mp4
这将获取第一个文件的第一个视频和音频流以及第二个文件的第一个视频流,并将它们复制到输出容器。
再说一次,正如@trikly提到的,这样做并没有真正的好处。特别是因为你已经在问题中标记了“视频流”,请注意,通过在容器内添加另一个流,你增加了客户端必须下载的文件的大小,而不是只提供较小的表示,这通常是你希望在带宽受限的环境中执行的操作。
真正的解决办法是采取某种自适应流媒体,可以使用 MPEG-DASH 或 HLS*。ffmpeg 可以创建可用于 DASH 和 HLS 流式传输的分段文件,但您还需要生成元信息文件等。并且您需要一个支持 DASH 或 HLS 的客户端。
如果设置起来太麻烦,您只需提供两种不同格式的视频,每种格式都有自己的链接。
*可分级视频编码其设计目的也类似,但目前已无人使用。