質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Discord

Discordは、ゲーマー向けのボイスチャットアプリです。チャット・通話がブラウザ上で利用可能で、個人専用サーバーも開設できます。通話中でも音楽を流したり、PC画面を共有できるなど多機能な点が特徴です。

YouTube

YouTubeとはユーザーがビデオをアップロード・共有・閲覧できるビデオ共有ウェブサイトです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

FFmpeg

FFmpegは、動画と音声を交換できるフリーソフトウェアです。UNIX系OSから派生した、MS-DOSから操作するコマンドラインツールです。libavcodecやlibavformat、libswscale、libavfilterなどを含みます。ライセンスは、コンパイルの際のオプションによりLGPLもしくはGPLに決定されます。対応コーデックや使用できるオプションが多く、幅広く利用されています。

Q&A

解決済

2回答

8214閲覧

Discord.py でYoutubeの曲を流したい (create_ytdl_player エラー)

Reply

総合スコア21

Discord

Discordは、ゲーマー向けのボイスチャットアプリです。チャット・通話がブラウザ上で利用可能で、個人専用サーバーも開設できます。通話中でも音楽を流したり、PC画面を共有できるなど多機能な点が特徴です。

YouTube

YouTubeとはユーザーがビデオをアップロード・共有・閲覧できるビデオ共有ウェブサイトです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

FFmpeg

FFmpegは、動画と音声を交換できるフリーソフトウェアです。UNIX系OSから派生した、MS-DOSから操作するコマンドラインツールです。libavcodecやlibavformat、libswscale、libavfilterなどを含みます。ライセンスは、コンパイルの際のオプションによりLGPLもしくはGPLに決定されます。対応コーデックや使用できるオプションが多く、幅広く利用されています。

0グッド

2クリップ

投稿2020/07/08 12:55

編集2020/07/08 12:56

したいこと

Discord.py async版で音楽BOTを作っていて、ffmpegでYouTubeの音楽を流そうと思っています。

該当のソースコード

python

1import discord 2 3client = discord.Client() 4 5@client.event 6async def on_message(message): 7 if message.author.bot: 8 return 9 10 if message.content == "/join": 11 voice = await discord.VoiceChannel.connect(message.author.voice.channel) 12 player = await voice.create_ytdl_player('https://www.youtube.com/watch?v=8oBp3OLXQ8Q') 13 player.start() 14 15client.run("token")

こんな感じです。流せたら整備するつもりです。

発生したエラー

python

1player = await voice.create_ytdl_player('https://www.youtube.com/watch?v=8oBp3OLXQ8Q') 2AttributeError: 'VoiceClient' object has no attribute 'create_ytdl_player'

こんな感じです。Qiitaを参考にしながら作ったらこのエラーが出ました。

補足情報

Python 3.8.3
Discord.py 1.3.3
youtube-dl 2020.5.29
PyNaCl 1.3.0
ffmpeg 1.4

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

Discord.py v1.0以降ではcreate_ytdl_playerは削除されたようです。古い記事を参照している可能性があります。

参考URL

投稿2020/07/08 23:26

yymmt

総合スコア1615

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Reply

2020/07/09 09:58 編集

そうだったのですね.. 頂いたリファレンスの https://discordpy.readthedocs.io/ja/latest/migrating.html#voice-changes を見ながら作っていった結果pc内のmp3ファイルを流すことができました。 でもYoutubeのURLからは流せなかったです。エラー↓ https://www.youtube.com/watch?v=8oBp3OLXQ8Q: Invalid data found when processing input 「無効なデータ」ということは voice.play(discord.FFmpegPCMAudio('https://www.youtube.com/watch?v=8oBp3OLXQ8Q')) これ自体が間違っているのでしょうか?
yymmt

2020/07/09 10:47 編集

可能性としては映像が含まれているためではないかと思います。ffmpegのオプションに-vnがあり音声だけ取り出せますので ffmpeg_options = { 'options': '-vn' } として discord.FFmpegPCMAudio(url, **ffmpeg_options) と呼び出してみるのはどうでしょうか?
Reply

2020/07/10 09:48 編集

やはり同じエラーが出てしまいますね... パソコン内のmp4ファイルからは音声を取り出せたんですけど、URL指定が難しそうです。 一通り思いつくものは試したのですが無理でした。 voice.play(discord.FFmpegPCMAudio(url, options="-vn")) など コード↓ voice = await discord.VoiceChannel.connect(message.author.voice.channel) url = "https://www.youtube.com/watch?v=8oBp3OLXQ8Q" ffmpeg_options = { 'options': '-vn' } voice.play(discord.FFmpegPCMAudio(url, **ffmpeg_options))
guest

0

ベストアンサー

youtubeからの音声を再生する場合、youtube_dlを使い自分でyoutubeから音声などダウンロードしてそれを再生する必要があります。ただしこの行為はYouTubeのTOS違反となるため、私は例を出すだけにとどめておきます。
discord.py GitHubのexample
こちらに例が載せてありますので、ご自分でコードを理解し使ってみてください。
ちなみにですがdiscord.FFmpegPCMAudioの引数に指定できるのはファイルパスであって、YouTube動画のリンクではありません。

投稿2020/07/10 14:22

daima3629

総合スコア163

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Reply

2020/07/19 02:39

回答遅れて申し訳ありません。 やはり、Youtube側の広告収入がなくなるといった点で規約違反なのでしょうか...? 実装するかは今は保留にして機能だけを作ってみます。
daima3629

2020/07/19 09:24

多分youtube-dlはスクレイピングを利用して動画データをとっていると思うんですけど、Googleは全てのサービスに対してスクレイピングを禁止しています。 なのでもちろんこれも規約違反となるわけです。 まあバレなきゃ犯罪じゃないとも言いますが、ご自分の責任でどうぞ。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問