YouTube live カメラ動画をopencvで表示

YouTube live カメラ動画をopencvで表示

静岡県の薩埵峠のyoutubeライブ画像をopencv で表示する

当初は

YouTube動画をOpenCVでキャプチャするスクリプト
を参考に実行したがエラーとなる

YouTubeのライブ配信をOpenCVで再生する
も同様にエラーとなる

ChatGpt で
opencv でYouTubeライブカメラの画像を表示するPythonコード
を表示し実行したが
これもエラー

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
ERROR: Unable to extract uploader id; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see  https://yt-dl.org/update  on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
Traceback (most recent call last):
  File "/Users/snowpool/.pyenv/versions/3.10.6/lib/python3.10/site-packages/youtube_dl/YoutubeDL.py", line 815, in wrapper
    return func(self, *args, **kwargs)
  File "/Users/snowpool/.pyenv/versions/3.10.6/lib/python3.10/site-packages/youtube_dl/YoutubeDL.py", line 836, in __extract_info
    ie_result = ie.extract(url)
  File "/Users/snowpool/.pyenv/versions/3.10.6/lib/python3.10/site-packages/youtube_dl/extractor/common.py", line 534, in extract
    ie_result = self._real_extract(url)
  File "/Users/snowpool/.pyenv/versions/3.10.6/lib/python3.10/site-packages/youtube_dl/extractor/youtube.py", line 1794, in _real_extract
    'uploader_id': self._search_regex(r'/(?:channel|user)/([^/?&#]+)', owner_profile_url, 'uploader id') if owner_profile_url else None,
  File "/Users/snowpool/.pyenv/versions/3.10.6/lib/python3.10/site-packages/youtube_dl/extractor/common.py", line 1012, in _search_regex
    raise RegexNotFoundError('Unable to extract %s' % _name)
youtube_dl.utils.RegexNotFoundError: Unable to extract uploader id; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see  https://yt-dl.org/update  on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
 
During handling of the above exception, another exception occurred:
 
Traceback (most recent call last):
  File "/Users/snowpool/aw10s/youtuvelive.py", line 36, in <module>
    display_youtube_stream(youtube_url)
  File "/Users/snowpool/aw10s/youtuvelive.py", line 11, in display_youtube_stream
    info_dict = ydl.extract_info(url, download=False)
  File "/Users/snowpool/.pyenv/versions/3.10.6/lib/python3.10/site-packages/youtube_dl/YoutubeDL.py", line 808, in extract_info
    return self.__extract_info(url, ie, download, extra_info, process)
  File "/Users/snowpool/.pyenv/versions/3.10.6/lib/python3.10/site-packages/youtube_dl/YoutubeDL.py", line 824, in wrapper
    self.report_error(compat_str(e), e.format_traceback())
  File "/Users/snowpool/.pyenv/versions/3.10.6/lib/python3.10/site-packages/youtube_dl/YoutubeDL.py", line 628, in report_error
    self.trouble(error_message, tb)
  File "/Users/snowpool/.pyenv/versions/3.10.6/lib/python3.10/site-packages/youtube_dl/YoutubeDL.py", line 598, in trouble
    raise DownloadError(message, exc_info)
youtube_dl.utils.DownloadError: ERROR: Unable to extract uploader id; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see  https://yt-dl.org/update  on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.

となる

youtube_dlライブラリがYouTubeのビデオからアップローダーIDを抽出することができない
で検索

Pythonのパッケージyoutube_dlで、DownloadErrorが発生する。

を参考に

1
pip install yt-dlp

でインストールし

1
import youtube_dl

の代わりに

1
from yt_dlp import YoutubeDL

でインポート

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import cv2
import youtube_dl
from yt_dlp import YoutubeDL
 
 
def display_youtube_stream(url):
    ydl_opts = {
        'format': 'best[ext=mp4]'# mp4 format, you can change this to other formats
        'quiet': True,
    }
 
    with YoutubeDL() as ydl:
        info_dict = ydl.extract_info(url, download=False)
        video_url = info_dict['url']
 
    cap = cv2.VideoCapture(video_url)
 
    if not cap.isOpened():
        print("Error: Could not open stream.")
        exit()
 
    while True:
        ret, frame = cap.read()
        if not ret:
            print("Failed to grab frame.")
            break
 
        cv2.imshow('YouTube Live Stream', frame)
 
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
 
    cap.release()
    cv2.destroyAllWindows()
 
# Replace with your YouTube live stream URL
display_youtube_stream(youtube_url)

として保存

これで実行すると
YouTube live画像が表示されます

なお表示しているのは
LIVE】静岡市さった峠 交通の要衝

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です