Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ibaigorordo/cap_from_youtube
Get an OpenCV video capture from an YouTube video URL
https://github.com/ibaigorordo/cap_from_youtube
opencv opencv-python python video-capture youtube youtube-dl yt-dlp
Last synced: 5 days ago
JSON representation
Get an OpenCV video capture from an YouTube video URL
- Host: GitHub
- URL: https://github.com/ibaigorordo/cap_from_youtube
- Owner: ibaiGorordo
- License: mit
- Created: 2022-08-20T09:04:18.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-08-26T01:13:54.000Z (4 months ago)
- Last Synced: 2024-12-16T05:26:39.944Z (6 days ago)
- Topics: opencv, opencv-python, python, video-capture, youtube, youtube-dl, yt-dlp
- Language: Python
- Homepage:
- Size: 32.2 KB
- Stars: 23
- Watchers: 3
- Forks: 5
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# cap_from_youtube
Get an OpenCV video capture from an YouTube video URL[![PyPI](https://img.shields.io/pypi/v/cap-from-youtube?color=2BAF2B)](https://pypi.org/project/cap-from-youtube/)
# Why
- pafy is widely used to get the video URL from a YouTube video URL, but since it uses youtube-dl which has not been updated recently, it suffers from some issues (dislike_count not found...).
- This repository is a simplified version of what pafy does, by just getting the url of the video and creating an OpenCV video capture from it.
- It uses YT-DLP (https://github.com/yt-dlp/yt-dlp), which is a fork of youtube-dl that is updated frequently.# Requirement
* YT-DLP
* OpenCV
* NumPy
# Installation
- The easiest way is to install it with pip:```bash
pip install cap_from_youtube
```
- You can also install it from GitHub:```bash
pip install git+https://github.com/ibaiGorordo/cap_from_youtube
```# Usage
## cap_from_youtube()
- `cap_from_youtube()` is the main function to obtain a video capture from a YouTube video URL.
- It requires the video URL as input and returns a `cv2.VideoCapture` object.
- By default, it returns the video with the highest resolution available.
- You can specify the resolution you want to get with the `resolution` parameter.
- Available resolutions: '144p', '240p', '360p', '480p', '720p', '720p60', '1080p', '1080p60', 'best'
- Example:```python
from datetime import timedelta
import cv2
from cap_from_youtube import cap_from_youtubeyoutube_url = 'https://youtu.be/LXb3EKWsInQ'
start_time = timedelta(seconds=5)
cap = cap_from_youtube(youtube_url, 'best', start=start_time)cv2.namedWindow('video', cv2.WINDOW_NORMAL)
while True:
ret, frame = cap.read()
if not ret:
break
cv2.imshow('video', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
```## list_video_streams()
- You can also use the `list_video_streams()` function to get the list of available video streams.
- It requires the video URL as input and returns two values:
- streams: a list of VideoStream with the information of the available video streams.
- resolutions: a NumPy array with the available resolutions.
- Example:
```python
from cap_from_youtube import list_video_streamsyoutube_url = 'https://youtu.be/LXb3EKWsInQ'
streams, resolutions = list_video_streams(youtube_url)for stream in streams:
print(stream)
```
# References
- pafy: https://github.com/mps-youtube/pafy
- yt-dlp: https://github.com/yt-dlp/yt-dlp
- imread_from_url: https://github.com/Kazuhito00/imread_from_url