如何在不改变帧尺寸的前提下,用cv2从RTSP链接保存低体积视频?
解决cv2保存RTSP视频体积过大的方法
1. 切换高效编码格式
你当前使用的MP4V(MPEG-4 Part 2)编码压缩效率偏低,换成H.264编码(对应FourCC码'avc1'),能在不改变帧尺寸的前提下,大幅降低视频体积,同时保留较好画质。大部分预编译版OpenCV都支持该编码。
2. 手动控制比特率
cv2.VideoWriter默认比特率较高,你可以通过设置自定义比特率来平衡体积与画质,比特率单位为bps,可根据场景调整数值。
优化后的代码示例
# 获取原视频的帧率和分辨率参数 fps = video.get(cv2.CAP_PROP_FPS) frame_width = int(video.get(cv2.CAP_PROP_FRAME_WIDTH)) frame_height = int(video.get(cv2.CAP_PROP_FRAME_HEIGHT)) # 初始化VideoWriter,使用H.264编码 out = cv2.VideoWriter( 'compressed_vid.mp4', cv2.VideoWriter_fourcc(*'avc1'), # H.264编码标识 fps, (frame_width, frame_height), isColor=True # 灰度视频请设为False ) # 设置比特率,示例为1Mbps,可根据需求增减(如500000到2000000之间测试) out.set(cv2.CAP_PROP_BITRATE, 1000000)
补充提示
- 如果H.264不可用,可尝试
'vp09'(VP9编码),压缩率更高但编码速度稍慢; - 比特率越低体积越小,但画质会相应下降,建议根据实际场景测试合适数值;
- 输出文件后缀保持
.mp4,H.264与MP4容器兼容性更好。
内容的提问来源于stack exchange,提问作者Vishak Raj
相关产品推荐
相关产品推荐

