OpenCV无法生成MP4视频文件问题求助
解决OpenCV无法生成MP4文件(0KB)的问题
以下是几个针对性的解决方法,按优先级尝试:
更换MP4兼容的编码格式
部分OpenCV版本对mp4v编码的支持存在兼容性问题,MP4容器更推荐使用H.264编码(对应avc1或H264)。替换你的fourcc配置:fourcc = cv2.VideoWriter_fourcc(*'avc1') video_writer = cv2.VideoWriter(video_path, fourcc, 30, (width, height)) for frame in frames: video_writer.write(frame) video_writer.release()确认OpenCV的FFmpeg依赖是否生效
手动下载FFmpeg不代表OpenCV能正确调用它,先检查你的OpenCV是否编译时包含FFmpeg支持:print(cv2.getBuildInformation())在输出中查找
FFmpeg项,若显示NO,说明当前版本不支持,需重新安装带FFmpeg的OpenCV:pip uninstall opencv-python pip install opencv-python-headless # 无GUI需求用这个,有需求换opencv-python校验帧的尺寸与格式
如果帧的尺寸和VideoWriter初始化时的(width, height)不匹配,会导致写帧失败,最终生成0KB文件。添加校验逻辑:for frame in frames: # OpenCV帧的shape是(height, width, channels),注意顺序 if frame.shape[:2] == (height, width): video_writer.write(frame) else: print(f"跳过尺寸不匹配的帧:当前{frame.shape[:2]},预期({height}, {width})")另外确保帧是OpenCV默认的BGR格式,若为RGB需转换:
frame = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)指定FFmpeg作为API后端
强制OpenCV使用FFmpeg后端处理视频写入,在创建VideoWriter时添加参数:video_writer = cv2.VideoWriter(video_path, fourcc, 30, (width, height), apiPreference=cv2.CAP_FFMPEG)
内容的提问来源于stack exchange,提问作者clydeH
相关产品推荐
相关产品推荐

