OpenCV VideoCapture无法从流中读取

时间:2018-12-18 09:43:55

标签: python opencv ffmpeg

我可以在VLC中打开流,但是在OpenCV中我无法捕获帧。 (Python 2.7,OpenCV 3.4.3二进制发行版x86,Windows 10)。我一直在遵循本指南:https://medium.com/@tomgrek/hackers-guide-to-the-aws-deeplens-1b8281bc6e24,但似乎无法在线阅读随机流(不确定我是否应该这样做,我看到了关于opencv videocapture can't open MJPEG stream的关于使用ffmpeg进行编译的问题,但我刚刚下载了该问题) Sourceforge中可用的二进制文件)。

  • 我正在使用AWS Deeplens,已更新为最新版本。

  • 已安装ffmpeg,最新版本。

然后,在/etc/ffserver.conf中,我添加了:

<Stream camera.h264>
File "/opt/awscam/out/ch1_out.h264"
VideoFrameRate 6
VideoSize 320x240
NoAudio
</Stream>

<Stream camera.mjpeg>
File "/opt/awscam/out/ch2_out.mjpeg"
VideoFrameRate 3
VideoSize 640x480
Format mjpeg
NoAudio
</Stream>
  • 我开始ffserver -f /etc/ffserver.conf
  • 在Windows机器上,我使用WSL并打开SSH隧道进入AWS Deeplens ssh -L 8090:localhost:8090 aws_cam@192.168.0.10
  • 这时,我可以在Windows计算机上打开VLC,如果我指向http://localhost:8090/camera.mjpeg,则可以看到来自摄像机的视频流。

但是,如果我运行以下代码:

cam = cv2.VideoCapture("http://localhost:8090/camera.mjpeg")
success, frame = cam.read()
opened = cam.isOpened()
success, frame, opened

我得到:

False, None, False

如果我浏览到http://localhost:8090/stat.html,则会看到:

Available Streams
Path    Served Conns     bytes  Format  Bit rate kbits/s    Video kbits/s   Codec   Audio kbits/s    Codec  Feed
test1.mpg   0   0   mpeg    96  64  mpeg1video  32  mp2 feed1.ffm
test.asf    0   0   asf_stream  320 256 msmpeg4 64  wmav2   feed1.ffm
stat.html   17  42150   -   -   -       -   
index.html  0   0   -   -   -       -   
camera.h264 3   6805k   h264    0   0   libx264 0       /opt/awscam/out/ch1_out.h264
camera.mjpeg    12  41073k  mjpeg   0   0   mjpeg   0       /opt/awscam/out/ch2_out.mjpeg

每次调用VideoCapture()时,我都会看到Served流中camera.mjpeg的数目如何增加2或3,而bytes却增加了几兆字节但我在OpenCV中看不到任何东西。我没有在Windows 10中尝试任何其他视频设备,但是我可以读取图像没有问题。我还尝试了在线随机流,也可以在VLC中打开,但不能在OpenCV中打开,请尝试以下操作:http://136.176.70.200/mjpg/video.mjpg

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

好像我需要在ffmpeg支持下自己编译OpenCV。