【问题标题】:Python 3.6.3 OpenCV3.3.1+Contrib Windows VideoCapture SDP file not workingPython 3.6.3 OpenCV3.3.1+Contrib Windows VideoCapture SDP 文件不工作
【发布时间】:2023-03-20 15:26:01
【问题描述】:

正如标题所说,我的 cv2.VideoCapture("bebop.sdp") 不起作用。我能得到的唯一调试信息是 isOpened() 返回 False。

videoFeed = cv2.VideoCapture("bebop.sdp")
while True:

    ret, currentVideoFrame = videoFeed.read()
    if ret:
        cv2.imshow('frame',currentVideoFrame)
        cv2.waitKey(1)
    else:
        print("FrameError - %s" % videoFeed.isOpened())

用 sample.mp4 文件替换 bebop.sdp 可以正常工作。 bebop.sdp 肯定在工作目录中(与 sample.mp4 一起)。我在这里有一个 ffmpeg dll:“C:\Users\uname\AppData\Local\Programs\Python\Python36\opencv_ffmpeg331_64.dll”。该代码在 python2.7 上运行良好(虽然我记得有类似的问题,但 dll 解决了这个问题。

我可以在 VLC 中打开 bebop.sdp 文件并收到我期望的视频。

有没有我可以访问的调试信息?

提前致谢!

【问题讨论】:

  • 您确定 bebop.sdp 与您执行此脚本的目录相同?
  • 这些都没有解决问题。我试着退后一步,使用 ffplay 而不是 opencv。这最初不起作用,但后来我意识到 ffplay 被防火墙阻止了。禁用防火墙允许 ffplay 方法工作,但使用 openCV 方法仍然是说流未打开。

标签: python opencv


【解决方案1】:

我通过下载 python3.4.4 并安装 OpenCV 版本 3.1.0.5 设法规避了这个问题。不知道为什么后来的版本有问题!

【讨论】:

    【解决方案2】:

    可能是因为FFMPEG版本不同。

    新的 FFMPEG 使用 ffplay xxx.sdp 会出错。

    您应该在 sdp 文件之前添加 -porotocol_whitelist file,rtp,udp。

    我认为这是同样的原因。

    【讨论】:

    • 这听起来是一个很好的解释。请通过editing 您的答案发布回答问题所需的代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-24
    • 2016-06-17
    • 2013-01-22
    • 2013-09-22
    • 2012-07-26
    相关资源
    最近更新 更多