2016-05-31 42 views
5

This link有一个关于如何使用python的OpenCV库0123d将数据从相机传输到您的python shell的整齐小例子。我期待做一些实验,并希望使用以下YouTube视频供稿:https://www.youtube.com/watch?v=oCUqsPLvYBQ是否可以通过https://(例如YouTube)将视频流式传输到OpenCV的Python中?

我已经试过修改实例如下:

import numpy as np 
import cv2 

cap = cv2.VideoCapture('https://www.youtube.com/watch?v=oCUqsPLvYBQ') 

while(True): 
    # Capture frame-by-frame 
    ret, frame = cap.read() 

    # Display the resulting frame 
    cv2.imshow('frame',frame) 
    if cv2.waitKey(1) & 0xFF == ord('q'): 
     break 

它产生错误:

WARNING: Couldn't read movie file https://www.youtube.com/watch?v=oCUqsPLvYBQ 
OpenCV Error: Assertion failed (size.width>0 && size.height>0) in imshow, file /tmp/opencv20160107-29960-t5glvv/opencv-2.4.12/modules/highgui/src/window.cpp, line 261 

是否有一个简单的解决方法,让我来串流播放这部影片进到我的蟒蛇shell通过cv2?不是绝对致力于cv2,如果有其他的图书馆可以达到同样的目的。

+2

我不认为这是可以打开'这样VideoCapture'。在[videocapture](http://docs.opencv.org/3.1.0/d8/dfe/classcv_1_1VideoCapture.html#a949d90b766ba42a6a93fe23a67785951)的openCV文档中写明参数应该是一个文件。但是你可以在两者之间使用[youtube-dl](https://rg3.github.io/youtube-dl/)。 – incBrain

+0

@incBrain:这看起来很有前途,谢谢。将尽快检查并通知您。 – Aaron

+1

@incBrain:'youtube-dl'是要走的路。谢谢你的提示! – Aaron

回答

2

@ incBrain的建议下载YouTube视频到本地mp4是去这里的方式。这里是我用来建立在EC2上的远程服务器环境的步骤,具有输出管道送入通过X11转发我的本地计算机。

  • ssh -X -i "<ssh_key.pem>" [email protected]<IP-address>.compute-1.amazonaws.com(注意-X选项是这里的一个重要补充这是我们用什么从EC-2服务器输出传递给本地X11客户端)
  • sudo pip install --upgrade youtube_dl(我知道,sudo pip是坏我责怪网站说明)
  • 下载YouTube视频到本地文件:youtube-dl https://www.youtube.com/watch?v=VUjF1fRw9sA -o motocross.mp4
  • python demo_cv.py

X11转发可能会很棘手。如果您遇到任何挂机,this post也可能对您有所帮助。

0

有可能与pafy(https://pypi.python.org/pypi/pafy

import cv2, pafy 

url = "https://www.youtube.com/watch?v=aKX8uaoy9c8" 
videoPafy = pafy.new(url) 
best = videoPafy.getbest(preftype="webm") 

video=cv2.VideoCapture(best.url) 
+0

这不起作用(至少在OpenCV 3.4.0中)。 video.read()总是返回(False,None)。该网址是有效的,例如wget会下载视频。 – burny

相关问题