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的VideoCapture时也遇到了同样的问题[cap.isOpened()返回False]
  • 在两种情况下,即cv2.VideoCapture(0)或VideoStream(src=0).start()从网络摄像头捕获时,独立可执行文件都可以正常工作
  • 当脚本在python中运行时,rtsp流捕获在这两种情况下都能正常工作,即不将其转换为独立的可执行文件
  • rtsp流在VLC播放器上进行了测试,效果良好
  • 我使用的是Python 3.6.2 | OpenCV 3.2.0 | Windows
  • 这可能是由于RTSP链路的utf-8 etc编码问题造成的吗?还有其他选择吗


    已解决:包括我的可执行文件旁边的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()