親子IoTワークショップ

マイコンとクラウドを使ってIoTとプログラミングを学ぼう

[ トップ | 開催予定・概要 | 2024-12開催 | お知らせ | Facebook ]

YouTubeから音楽をダウンロードして再生する

まずは「Bluetoothスピーカーを使う」を参照して、スピーカーをラズパイに接続し、音声をスピーカーから流せることを確認してください。

次に、ラズパイを最新の状態にします。Terminalで、以下のコマンドをひとつづつ実行してください。

sudo apt update -y

sudo apt full-upgrade -y

youtube-dlをインストールする

YouTubeから動画をダウンロードするコマンドがyt-dlpです。以下のコマンドでインストールします。

sudo pip3 install -U yt-dlp

yt-dlpは頻繁にアップデートされているので、ときどきこのコマンドを再度実行して最新バージョンへ更新する必要があります。

YouTubeから動画をダウンロード、保存する

youtube-dlを使ってYouTubeから動画をダウンロードするには、まずその動画のURLをチェックします。動画URLは以下のようなフォーマットになっています。

https://www.youtube.com/watch?v=GR_KWvtyUbM

この動画URLを使って、以下のコマンドを実行してください。

yt-dlp https://www.youtube.com/watch?v=GR_KWvtyUbM

これで、YouTubeから対象動画がダウンロード、保存されます。動画の長さにもよりますが、それなりに時間がかかります。気長に待ちましょう。ダウンロードが終了したら、.webmファイルが保存されます。これを再生するには、VLCを使います:

vlc xyzabc.webm

ラズパイは、動画再生するには非力なので、VLCが起動して動画が再生されるまでに時間がかかると思います。より現実的なのは、ダウンロードした動画から音楽部分だけを抽出して、それを再生することです。ラズパイでも音楽の再生は問題ないはずです。

YouTubeから動画をダウンロードして音楽だけ抽出、保存する

以下、動画をダウンロードして音楽だけ抽出するコマンドです。「-x」を追加するだけです。

yt-dlp -x https://www.youtube.com/watch?v=GR_KWvtyUbM

抽出された音楽データは、.opusファイルで保存されます。これをVLCで再生するコマンドが以下です。

vlc -I dummy xyzabc.opus --play-and-exit

「-I dummy」の部分は、VLCがウィンドウを開かずに音楽を再生するための指定です。最後の部分「–play-and-exit」を追加すると、音楽再生後にコマンドが自動終了します。

以下のコマンドは、抽出する音楽データに関して追加の指定をしたものです。

yt-dlp -x --audio-quality 0 --audio-format mp3 https://www.youtube.com/watch?v=GR_KWvtyUbM

「–audio-quality 0」は音楽データの品質を(可能なら)落とさないようにする指示です。数字の「0」を大きくすると、品質を落としてファイルサイズを小さくできます。最低の品質を指定するには「10」を指定して下さい。「–audio-format mp3」は音楽データの形式をMP3にする指示です。mp3以外にaac、wavなども指定可能です。

さらに以下のコマンドでは、「-o」以降の部分で、ファイル名が短く単純なものになるよう指示しています。

yt-dlp -x --audio-quality 0 --audio-format mp3 -o '%(title)s.%(ext)s' --restrict-filenames --quiet https://www.youtube.com/watch?v=GR_KWvtyUbM

「–restrict-filenames」は、ファイル名に使う文字をアルファベット(ASCII文字)だけに限定し、「&」やスペースを使わない指示です。また、「–quiet」は、ダウンロードとデータ形式の変換に関する進捗状況のメッセージを一切表示しないモードを指示しています。

保存された.mp3ファイルを再生するには以下のコマンドを実行してください。

vlc -I dummy xyzabc.mp3 --play-and-exit

プログラムを使って音楽をダウンロード、保存する

yt-dlpを使って音楽データをダウンロード、保存するPythonプログラムが、youtube-dl.pyです。yt-dlpコマンドを2回subprocess.run()に渡して実行しています。1回目は、もともとの音楽データの名前をベースにファイル名を決めています。2回目では特定のファイル名(sample.mp3)を与えて、その名前を使っています。

プログラム冒頭の

url = "YOUTUBE-URL"

で、YOUTUBE-URLを動画URLに適宜置き換えてください。URLの前後にある”は両方ともそのままにしてください。

自習プロジェクトの目次に戻る