问题描述
使用pyinstaller将python程序打包为exe文件,其中包含保存视频的代码。直接运行脚本时,程序能够正确的保存视频。但是通过pyinstaller打包成exe文件后,exe文件无法保存视频或者保存的视频文件为空。
解决方法
方法一
将python的环境下的cv2安装包中的opencv_videoio_ffmpeg481_64.dll文件拷贝到exe的同目录下即可恢复正常。每个人的python路径不一样,opencv_videoio_ffmpeg481_64.dll文件名中的数字部分也可能不一样。我的文件路如下:
D:\anaconda3\envs\yolov8test\Lib\site-packages\cv2
方法二
打包exe文件时,使用--add-binary
参数,将上述opencv_videoio_ffmpeg481_64.dll文件一起打包进来即可。命名格式如下:
--add-binary
参数后面写的是opencv_videoio_ffmpeg481_64.dll文件的绝对路径。
pyinstaller --onefile videoSave.py --add-binary D:\anaconda3\envs\yolov8test\Lib\site-packages\cv2\opencv_videoio_ffmpeg481_64.dll
参考
1.pyinstaller 打包成 exe 文件后无法保存视频的问题
2.Exe file build by Pyinstaller can not save video with cv2.VideoWriter