Video ffmpeg:如何限制视频输出的比特率?

Video ffmpeg:如何限制视频输出的比特率?,video,ffmpeg,bitrate,Video,Ffmpeg,Bitrate,对于在绿色屏幕前拍摄的2GB原始视频文件,我想添加alpha通道 我的问题是:输出文件对我来说太大了(大约是输入文件的20倍),而视频编辑器OpenShot似乎无法处理如此大的文件。通过比较输入和输出的文件属性,可以看出填充文件中的比特率约为15k,结果文件中的比特率为150k-250k,这似乎可以找出问题所在 (顺便说一句,我还想丢弃剪辑的第一部分以及它的音频通道,并在此过程中将帧速率从30 fps降低到24 fps,这一切都很好。) 这是我的命令: ffmpeg.exe -i <in.

对于在绿色屏幕前拍摄的2GB原始视频文件,我想添加alpha通道

我的问题是:输出文件对我来说太大了(大约是输入文件的20倍),而视频编辑器OpenShot似乎无法处理如此大的文件。通过比较输入和输出的文件属性,可以看出填充文件中的比特率约为15k,结果文件中的比特率为150k-250k,这似乎可以找出问题所在

(顺便说一句,我还想丢弃剪辑的第一部分以及它的音频通道,并在此过程中将帧速率从30 fps降低到24 fps,这一切都很好。)

这是我的命令:

ffmpeg.exe -i <in.MOV> -vf chromakey=0x007d06:0.15:0.0 -ss 40.420 -r 24 -b:v 15840k -maxrate 15840k -bufsize 15840k -an -c:v <encoder> <out.mov>
ffmpeg.exe-i-vf chromakey=0x007d06:0.15:0.0-ss 40.420-r24-b:v 15840k-maxrate 15840k-bufsize 15840k-an-c:v
我理解的参数如下:

-i <in.mov> ... infile
-vf chromakey=0x007d06:0.15:0.0 ... chroma, tolerance & blend of greenscreens
-ss 40.420 ... skip before second 40.420 (this works)
-r 24 ... frame rate (this works, too)
-b:v 15804k ... bitrate (seemingly no effect)
-maxrate 15840k ... maximum BitRate (seemingly no effect)
-bufzise 15840k ... Buffer size (can't tell)
-an ... no audio channel (works fine)
-c:v <encoder> ... Video Encoder (ffvhuff, png, qtrle and tiff were tried, all to the same result)
<out.mov> ... outfile
-i。。。填充
-vf chromakey=0x007d06:0.15:0.0。。。绿纱的色度、公差和混合
-ss 40.420。。。在第二个40.420之前跳过(此操作有效)
-r 24。。。帧速率(这也行)
-b:v 15804k。。。比特率(似乎没有影响)
-最大速率15840k。。。最大比特率(似乎没有影响)
-bufzise 15840k。。。缓冲区大小(不知道)
-安。。。没有音频通道(工作正常)
-c:v。。。视频编码器(尝试了ffvhuff、png、qtrle和tiff,都得到了相同的结果)
... 输出文件
b、 maxrate和bufsize被描述为全局选项。无论采用何种设置,在处理过程中都会报告高达3000000 kbit/s(tiff)的比特率

(我还添加了-pixel_格式的argb,但这似乎也被忽略了,ffmpeg总是报告编写yuva420p。)


我遗漏了什么?

您尝试的所有编码器都是无损的。不能为无损编码器设置比特率


尝试VP8/9,即
-c:v libvpx
libvpx-vp9
,像素格式为
-pix\u fmt yuva420p
。移除比特率/maxrate/bufsize并设置
-crf N-b:v 0
,其中N的范围为0到63。尝试使用值20。分别向上/向下查看更小/更好的视频流。

非常感谢!不幸的是,没有成功。libvpx告诉我“使用auto_alt_ref的透明编码不起作用”。(添加-auto_alt_ref 0会产生一个“unrecognized option”错误。)我使用您的提示尝试了18个编码器。他们中的每一个人都失败了(由于各种原因)。Libvpx-vp9似乎可以工作(没有警告),尽管速度很慢(0.03,即一个40英尺的剪辑需要50小时),但是在视频编辑器中,我渲染的3秒钟没有显示任何透明度。如果编码器有损且与包含alpha的像素格式兼容,是否有列表?我什么也没找到。它是
-auto alt ref 0
。我给出的设置仅适用于VPx编码器;它们不是通用的。我不熟悉Openshot,但你能使用单独的层/视频作为alpha通道吗,即
alpha matte
,我不太确定,但恐怕不行。