yt_dlpというライブラリを使って、youtubeの動画をダウンロードして保存する方法を紹介します
個人で楽しむような用途であれば法的には問題のないライブラリのようです
youtubeの利用規約もよく理解して使いこなせばとても便利なライブラリだと思います
・環境
windows 11
ffmpeg version 7.1
yt-dlp 2024.11.4
・FFmpegのインストール
音声ファイルを生成、加工する段階でFFmpegというソフトウェアを使用します
自分はWindowsのパッケージ管理システムのChocolateyを使用してインストールしました
Chocolateyは、pythonでいえばpipのような感じだと思います
Chocolateyをまだ持っていない方は以下の公式サイトからインストールしてください
管理者権限でpowershellを開いて、上の画面の一番下のコマンドをコピーして実行します
そうしたらChocolateyを使ってffmpegをインストールしていきます
そのままターミナル(powershell等)で以下のコマンドを実行します
choco install ffmpeg
途中で確認の質問が出てきますが、Yを入力してインストールを完了させます
これでffmpegのインストールができました
ffmpegのバージョン確認は以下のコードで表示されます
ffmpeg -version
・youtube(動画)のダウンロード
まずはライブラリをインストールします
pip install yt-dlp
動画ファイルとしてダウンロードするコードを書きます
from yt_dlp import YoutubeDL
URL="ここにyoutubeのURL"
# ダウンロードのオプション指定
ydl_opts = {
'outtmpl': r"C:\Users\user\Documents\download\%(title)s.%(ext)s", # ダウンロード先指定
'format': 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]' #画質、ファイル形式指定
}
# 動画のURLを指定してダウンロード
with YoutubeDL(ydl_opts) as ydl:
ydl.download(URL)
youtubeのURLは動画の画面上で右クリックなどで取得できます
ダウンロードのオプションはとりあえず最低限のものを記載しています
ダウンロードディレクトリを指定して、最高画質、最高音質を指定、ファイル形式をMP4としています
%(title)s.%(ext)s の部分で、youtubeのタイトルと拡張子を指定しています
これだけで指定したフォルダにMP4ファイルがダウンロードされます
・youtube(音声)のダウンロード
音声ファイルとしてダウンロードするコードを書きます
from yt_dlp import YoutubeDL
URL="ここにyoutubeのURL"
# ダウンロードのオプション指定
ydl_opts = {
'outtmpl': r"C:\Users\user\Documents\download\%(title)s.%(ext)s", # ダウンロード先指定
'format': 'bestaudio', #最高音質を指定
'postprocessors': [ #ダウンロード後の処理を指定
{'key': 'FFmpegExtractAudio', #FFmpeg使用
'preferredcodec': 'mp3', #ファイル形式指定
'preferredquality': '192'}, #ビットレート指定
{'key': 'FFmpegMetadata'},
],
}
# 動画のURLを指定してダウンロード
with YoutubeDL(ydl_opts) as ydl:
ydl.download(URL)
先ほどの動画ダウンロードとの違いは、formatで音声ファイルのみ最高音質にしていること、
ダウンロード後の処理を書いているところです
‘postprocessors’の中にリスト形式で記載します
ここでffmpegを使用して音声データのmp3に変換しています
次回の記事ではこのダウンロードした音声ファイルから、生成AIを使って文字起こしをする方法を紹介します
自分はプログラミング勉強系の動画をテキストにしていつでもスマホなどで見てるようにしています
他にも英語の音声データも日本語に翻訳することもできるので、海外のyoutube動画も日本語でテキストデータにすることができます
コメント
記事の作成ありがとうございました。
YouTubeで学習しているので、オフラインでも動画再生できるようになり、本当に助かりました。
今後の更新も楽しみにしています。
モンエナ様
コメントありがとうございます。記事更新の励みになります。
学習の助けになり幸いです。