结论:只有"不动画面"时才谈得上无损
先说结论:只要你改了画面的尺寸或比例,就一定重新编码,就一定有量化损失。能无损的只有一种情况——纯粹掐头去尾(只裁时间轴),并且从关键帧开始直接拷贝码流。
原因在压缩方式:H.264、VP9 都用帧间预测,后面的帧只存和参考帧的差异。裁掉一块画面,剩下宏块的参考关系和运动矢量全变了,只能重算。
重编码时,裁剪坐标别乱填
H.264 以宏块为单位压缩,常见 16×16(4:2:0 下色度块 8×8),所以裁剪框的 left / top / width / height 尽量取偶数。
{ left: 438, top: 0, width: 404, height: 720 } // 稳
填 437 这种奇数值,编码器要在边界多处理一列像素,属于没必要的开销。输出宽高更严格,必须是偶数。
"剪不准"的锅,在关键帧上
只裁时间轴、走拷贝路径时,起点会落到最近的关键帧上。关键帧间隔一般是 5 秒。
你填"从第 3.2 秒开始",实际可能从第 0 秒或第 5 秒的关键帧起,于是出现零点几秒到几秒的出入。这就是很多人以为"工具剪不准"的真正原因——不是 bug,是拷贝路径必须整帧对齐。
想要精确到具体某一帧,就只能重编码,没有别的办法。
那还追不追求"无损"
我的看法:裁画面就别纠结无损,把码率给够比什么都实在——人眼对量化损失的敏感度,远低于对码率不足的敏感度。
在 视频裁剪工具 里,只裁时间且不动画面时会优先走拷贝路径;一旦动了画面,就老老实实重编码,并把码率按分辨率和帧率算对。这两种行为差别很大,你看到的等待时间也不一样。