2016-05-31 67 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

相關問題