ffmpeg多区域带时间线enable参数的delogo滤镜失效及码率异常咨询
问题解答
1. 带enable参数的delogo不生效原因
- 核心错误是
between时间函数参数顺序写反:ffmpeg的between(t, start, end)要求起始时间小于结束时间才会返回真,你所有带enable的表达式都写成了between(t, 大的时间值, 小的时间值),比如between(t,839,12),时间永远不可能满足839<t<12,所以这些滤镜全程不会触发。该问题和滤镜数量上限、是否混合带/不带enable的滤镜没有任何关系,ffmpeg的滤镜链没有明确数量上限,只要硬件资源足够即可正常运行。 - 额外可优化点:你开头重复写了两次一模一样的无enable delogo,删掉重复的那条即可,不影响功能但属于冗余配置。
修正方法:把所有between的两个时间参数调换顺序,比如between(t,839,12)改成between(t,12,839),其余所有带enable的delogo都按这个规则修改即可正常触发对应时段的模糊效果。
2. 输出码率过高原因
- 编码格式变化:你之前做编辑大概率使用的是H.264编码,而本次命令指定了
-c:v mpeg4(MPEG-4 Part 2编码),这种编码的压缩效率比H.264低30%~50%,同质量下码率自然会高很多。 - 码控参数冲突:你同时设置了
-q:v 2和-vb 15000,MPEG-4编码下恒定质量因子(q:v)的优先级高于平均码率限制,q:v 2是非常高的质量档位,会直接冲破你设置的15000k码率限制,最终码率自然偏高。
修正方法:
- 如果可以换编码,把
-c:v mpeg4换成-c:v libx264 -crf 23,crf 23是默认质量档位,码率会比你现在低很多,和原视频码率接近。 - 如果必须用mpeg4编码,把
-q:v 2调大到3~5,或者添加-maxrate 15000k -bufsize 30000k强制限制最高码率不超过15000k。
内容的提问来源于stack exchange,提问作者two4two
相关产品推荐
相关产品推荐

