Python视频抽帧代码中FFMPEG命令工作原理及参数含义问询
问题1:参数 -q:v 2 的具体含义与作用
- 该参数是FFmpeg控制视频输出质量的专用参数,其中
q是quality(质量)的缩写,:v代表规则仅作用于视频流。 - 它采用恒定质量编码模式,取值范围为1~31,数值越小代表输出质量越高、压缩损失越小,对应输出文件的体积也越大。
- 本次取值为2,属于最高质量档位,能保证提取出的JPG帧几乎没有可见的压缩伪影,画质损失极低。
问题2:滤镜参数 scale=%s 中 -1:256/256:-1 的工作逻辑,是否会将视频调整为256x256分辨率
scale是FFmpeg的缩放滤镜,参数格式为scale=输出宽度:输出高度:- 某一维度参数填
-1时,FFmpeg会自动根据原视频的原始宽高比计算该维度的数值,严格保持画面比例不变,不会出现拉伸变形的问题。
- 某一维度参数填
- 具体工作逻辑:
代码会先通过ffprobe读取原视频的宽高,判断视频的横竖方向:- 当原视频宽度>高度(横屏视频)时,使用
-1:256:将输出高度固定为256像素,宽度由原宽高比自动计算得到。 - 当原视频宽度≤高度(竖屏/正方形视频)时,使用
256:-1:将输出宽度固定为256像素,高度由原宽高比自动计算得到。
- 当原视频宽度>高度(横屏视频)时,使用
- 不会默认输出256x256的分辨率,除非原视频本身就是1:1的正方形比例。比如你给出的示例输入视频分辨率为320x240,属于宽大于高的横屏视频,最终输出的帧分辨率为约341x256,保持了原视频的4:3宽高比。
内容的提问来源于stack exchange,提问作者Tariq Hussain
相关产品推荐
相关产品推荐

