下面是详细讲解“python opencv 读取本地视频文件 修改ffmpeg的方法”的完整攻略:
一、前置条件
在进行本文讲解前,请确保你已经安装好了 Python 和 OpenCV,以及正确配置了环境变量。
二、读取本地视频文件
使用 Python 调用 OpenCV 读取本地视频文件,可以采用以下代码:
import cv2
cap = cv2.VideoCapture('test.mp4') # test.mp4 是你要读取的视频文件名称
while(cap.isOpened()):
ret, frame = cap.read()
if ret:
cv2.imshow('frame',frame)
if cv2.waitKey(25) & 0xFF == ord('q'): # 弹出的视频窗口可点击 q 键关闭
break
else:
break
cap.release()
cv2.destroyAllWindows()
上述代码会读取 test.mp4
视频文件,并且将每一帧图像在一个 OpenCV 窗口中展示。注意,弹出窗口不能命名为 win32cv,否则opencv自带的无法打开新的窗口。
三、修改FFmpeg的方法
由于 FFmpeg 的格式支持很广泛,但默认情况下,OpenCV 无法读取一些格式的视频文件,比如 .avi、.flv 等。这时可以通过修改 FFmpeg 的方式来支持这些格式的视频文件。
以下是两种示例方法:
1.在 Python 中使用 ffmpeg-python 库
这种方法可以使用 Python 中的 ffmpeg-python 库,通过在 Python 中调用 FFmpeg 命令来读取不支持的视频文件格式。
使用方法如下:
import ffmpeg
input_file = 'test.avi' # 要读取的视频文件路径
output_file = 'test.mp4' # 要输出的新文件路径,需要与读取文件路径不同
ffmpeg.input(input_file).output(output_file).run()
上述代码将会使用 FFmpeg 将 test.avi
视频文件转换为 test.mp4
格式的新文件。
2.手动修改 FFmpeg
当然,你也可以手动修改 FFmpeg 以支持更多格式的视频文件。以下是详细步骤:
- 打开
opencv\sources\3rdparty\ffmpeg\
目录下的CMakeLists.txt
文件 - 将以下内容添加到文件末尾:
set(LIBAVCODEC_INCLUDE_DIRS "${CMAKE_CURRENT_LIST_DIR}/include/libavcodec")
set(LIBAVFORMAT_INCLUDE_DIRS "${CMAKE_CURRENT_LIST_DIR}/include/libavformat")
set(LIBAVUTIL_INCLUDE_DIRS "${CMAKE_CURRENT_LIST_DIR}/include/libavutil")
set(LIBSWSCALE_INCLUDE_DIRS "${CMAKE_CURRENT_LIST_DIR}/include/libswscale")
- 在 Windows 系统下,还需要修改
opencv\sources\3rdparty\ffmpeg\version.h
文件
在文件末尾添加以下内容:
#define AV_CODEC_ID_H264 (CODEC_ID_H264)
#define AV_CODEC_ID_MPEG4 (CODEC_ID_MPEG4)
然后保存并关闭文件。
- 打开
opencv\sources\3rdparty\ffmpeg\common.mak
文件,找到以下内容:
DEMDEC_LIBS = $(call map_deps,$(4),$(5),$(D)/libavcodec/libavcodec.a,$(D)/libavutil/libavutil.a) $(EXTRALIBS)
将其修改为:
DEMDEC_LIBS = $(call map_deps,$(4),$(5),$(D)/libavcodec/libavcodec.a,$(D)/libavformat/libavformat.a,$(D)/libavutil/libavutil.a,$(D)/libswscale/libswscale.a) $(EXTRALIBS)
- 最后使用 CMake 重新编译 OpenCV,即可使用修改后的 FFmpeg。
四、总结
以上就是关于“python opencv 读取本地视频文件 修改ffmpeg的方法”的完整攻略,希望对你有所帮助。如有疑问,欢迎在评论区留言。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python opencv 读取本地视频文件 修改ffmpeg的方法 - Python技术站