Python 使用pyinstaller将脚本转换为独立可执行文件时,捕获RTSP流失败
代码:Python 使用pyinstaller将脚本转换为独立可执行文件时,捕获RTSP流失败,python,pyinstaller,rtsp,opencv3.0,Python,Pyinstaller,Rtsp,Opencv3.0,代码: 我在使用opencv的VideoCapture时也遇到了同样的问题[cap.isOpened()返回False] 在两种情况下,即cv2.VideoCapture(0)或VideoStream(src=0).start()从网络摄像头捕获时,独立可执行文件都可以正常工作 当脚本在python中运行时,rtsp流捕获在这两种情况下都能正常工作,即不将其转换为独立的可执行文件 rtsp流在VLC播放器上进行了测试,效果良好 我使用的是Python 3.6.2 | OpenCV 3.2.0 |
已解决:包括我的可执行文件旁边的opencv\u ffmpeg320\u 64.dll。包括我的可执行文件旁边的opencv\u ffmpeg320\u 64.dll。
或者,将该dll文件复制到python目录中的dll文件夹,只需询问所有明显的问题。。。没有防火墙可以阻止二进制文件,但不能阻止python?没有像SELinux那样的东西挡道吗?你是从与脚本相同的机器上测试二进制文件吗?@Basic是的,我是从与脚本相同的机器上测试二进制文件。为了安全起见,打开可执行文件的端口和防火墙,然后重试,但没有成功。解决方法:在我的可执行文件旁边包含opencv_ffmpeg320_64.dll。这样就可以了。。。你可能想把它作为一个答案,并接受它。。。将让其他人知道此问题已得到解答。在哪里可以找到该.dll?当我运行exe文件时,我也有同样的问题。我在conda env上内置了opencv python=3.4.3、ffmpeg=2.7。但我不知道应该把哪个.dll放在可执行文件旁边。如果我想在另一台ffmpeg不同或不存在的PC上运行.exe,该怎么办?
from imutils.video import VideoStream
import cv2
# Read rtsp stream
rtsp = u"rtsp://admin:admin@10.64.1.31:554/1/h264major"
#vs = VideoStream(src=0).start() # for capturing from webcam
vs = VideoStream(src=rtsp).start()
while True:
frame = vs.read()
# show the output frame
cv2.imshow("Frame", frame)
key = cv2.waitKey(1) & 0xFF
# if the `q` key was pressed, break from the loop
if key == ord("q"):
break
# do a bit of cleanup
cv2.destroyAllWindows()
vs.stop()