乐闻世界logo
搜索文章和话题

在 OpenCV 中如何使用 H . 264 压缩编写视频文件

4 个月前提问
3 个月前修改
浏览次数17

1个答案

1

在OpenCV中,使用H.264编码压缩视频文件可以通过cv2.VideoWriter类实现。下面是一个具体的示例,说明如何使用这个类将摄像头捕获的视频以H.264编码保存到文件中。

首先,确保你的系统中安装了OpenCV库。此外,由于H.264是一个专利编码格式,你需要确保OpenCV配置了支持H.264的编解码器,比如ffmpegx264

以下是一个简单的代码示例,展示如何捕获视频并用H.264编码保存:

python
import cv2 # 指定视频输出的文件名 output_filename = 'output.mp4' # 设置视频编码器,这里使用XVID,通过cv2.VideoWriter_fourcc()设置 # 对于H.264,我们使用'MP4V'或者根据你的环境可能需要改为'X264' fourcc = cv2.VideoWriter_fourcc(*'X264') # 创建VideoWriter对象,指定文件名,编码器,帧率和分辨率 out = cv2.VideoWriter(output_filename, fourcc, 20.0, (640, 480)) # 使用设备的第一个摄像头 cap = cv2.VideoCapture(0) if not cap.isOpened(): print("无法打开摄像头") exit() while True: # 捕获一帧视频 ret, frame = cap.read() if not ret: print("无法读取帧,结束捕获") break # 将帧写入输出文件 out.write(frame) # 显示帧 cv2.imshow('frame', frame) if cv2.waitKey(1) == ord('q'): break # 释放摄像头和文件句柄并关闭所有窗口 cap.release() out.release() cv2.destroyAllWindows()

在这段代码中,我首先设置了使用H.264编码的方式(通过fourcc变量,X264或者根据你的系统配置选择合适的编码器)。然后初始化VideoWriter以写入视频文件,同时设置了文件名、编码器、帧率和视频大小。

接着,通过一个循环从摄像头读取视频帧,并使用out.write(frame)将每帧写入到指定的输出文件。最终释放所有资源,并关闭所有窗口。

注意,要使得以上代码运行,你的OpenCV必须配置了ffmpeg或其他库支持H.264编码。另外,如果你在使用其他操作系统或环境,可能还需要安装相应的编解码器或调整fourcc编码器设置。

2024年6月29日 12:07 回复

你的答案