Is it possible to stream video from https:// (e.g. YouTube) into python with OpenCV?
you need to have 2 things installed
- pafy (pip install pafy)
- youtube_dl (sudo pip install --upgrade youtube_dl)
after installing these two packages you can use the youtube url to play the streaming videos from youtube.Please refer the code below
url = 'https://youtu.be/W1yKqFZ34y4'vPafy = pafy.new(url)play = vPafy.getbest(preftype="webm")#start the videocap = cv2.VideoCapture(play.url)while (True): ret,frame = cap.read() """ your code here """ cv2.imshow('frame',frame) if cv2.waitKey(20) & 0xFF == ord('q'): break cap.release()cv2.destroyAllWindows()
it is possible with pafy (https://pypi.python.org/pypi/pafy)
import cv2, pafyurl = "https://www.youtube.com/watch?v=aKX8uaoy9c8"videoPafy = pafy.new(url)best = videoPafy.getbest(preftype="webm")video=cv2.VideoCapture(best.url)
@incBrain's suggestion to download the youtube video to local mp4 was the way to go here. Here were the steps that I used to set up a remote server environment on EC2, with output piped into my local computer via X11 forwarding:
ssh -X -i "<ssh_key.pem>" ubuntu@<IP-address>.compute-1.amazonaws.com
(Note the-X
option is an important addition here. It's what we use to pass output from the EC-2 server to a local X11 client)sudo pip install --upgrade youtube_dl
(I know,sudo pip
is bad. I blame the site instructions)- Download youtube video to local file:
youtube-dl https://www.youtube.com/watch?v=VUjF1fRw9sA -o motocross.mp4
python demo_cv.py
X11 forwarding can be tricky. If you run into any hangups there this post might be helpful to you also.