我正在寻找一种从高比特率 MXF 输入文件创建 CBR TS 文件的方法。我尝试过使用 ffmpeg,但显然它在创建 CBR 输出文件方面做得不好,所以现在我有点不知道我可以使用什么。我尝试过使用:
ffmpeg -i input.mxf -copyts -c copy -muxrate 200M -f mpegts output.ts
我只想加点馅儿。我还尝试使用以下命令对视频进行转码:
ffmpeg -i input.mxf -vcodec libx264 -b:v 150M -minrate:v 150M -maxrate:v 150M -bufsize:v 140M -acodec mp2 -ac 2 -b:a 192k -f mpegts output.ts
但也没有成功。我希望输出完全平坦。这可以通过将复用率设置为更高的值或实现完全 CBR 视频比特率来完成。我尝试过的ffmpeg是3.2.4。
答案1
我找到了一种方法,可以通过 10-15% 的填充实现相当漂亮且平滑的输出 CBR。不幸的是,它需要对原始文件进行转码:
$ffmpeg -i input.mxf \
-c:v libx264 \
-x264opts nal-hrd=cbr \
-b:v 30M -minrate:v 30M -maxrate:v 30M -muxrate 35M -bufsize:v 25M \
-acodec aac -ac 2 -b:a 128k \
-f mpegts output.ts
此命令将从输入文件创建完整的 CBR TS。这里重要的是视频比特率 (b:v) 等于视频最大和最小视频比特率,复用率必须比设置的视频比特率(包括音频比特率)高 10-15%,并且 buffsize 约为 70视频比特率的%。