YouTube動画をストリーミング(ダウンロードせずに)したいだけです。 pythonでこれを行う簡単な方法はありますか、それを行うスクリプトが存在しますか?または、ビデオを一時ファイルにダウンロードし、変換して再生する必要がありますか?
pafy
は、VLCやmplayerなどに渡すURLを取得するために使用できるPythonライブラリです。オーディオのみを指定できます。よく文書化されています here で、Sudo apt-get install python-pafy
でインストールできます。
youtube-dl
に似ているytdl
と呼ばれるコマンドラインツールが付属しているため、実際には望んでいることを実行できないことに注意してください。いくつかのpythonを作成する必要があります。あなたの質問の性質上、これは問題ではないと思いますが、さらにサポートが必要な場合はお知らせください。
これはあなたの問題に対する完璧な解決策ではありませんが、おそらくあなたを助けるでしょう。
youtube-dl
というコマンドラインツールがあり、多くのオプションが用意されています。最初に完全なビデオをダウンロードしてから、オーディオに変換すると思います。オーディオストリームのみをダウンロードする可能性があるかどうかはわかりませんが、そうではないと思います。また、youtube-dl
はpythonで書かれていますが、単なるスクリプトではありません。
マンページをご覧になる場合は、後処理オプションを探してください。 --extract-audio
は、たとえば、ビデオファイルをオーディオファイルに変換します。 --audio-format
と--audio-quality
を設定することもできます。 --exec CMD
を使用してダウンロードした後、カスタムコマンドを実行することもできます。
Sudo apt install youtube-dl
Sudo youtube-dl -U
で更新しますまたは、VLCを使用してビデオをストリーミングし、ビデオ機能を無視またはオフにすることができます。
URLをコピーし、vlcを開いてCtrl + Vを押すか、ネットワークSteam(CTRL + N)を開いてURLを貼り付けると動作するはずです。次に、「ビデオ」->「ビデオトラック」->「無効化」をクリックします。
これにより、ビデオ全体がストリーミングされますが、表示されないことに注意してください。
Vlcとテキストベースのブラウザlynx(どちらもUbuntuのリポジトリから入手可能)を使用している場合、コマンドラインからビデオをストリーミングするために使用できる巧妙なトリックがあります。私が使用するコマンドは、検索を実行し、vlcで再生される結果の最初のページのプレイリストを作成します。
トリッキーな構文を処理する簡単なスクリプトを作成しました。スクリプトは次のとおりです。
#!/bin/bash
lynx -dump "https://www.youtube.com/results?search_query=\"$1\"" | egrep -o "http.*watch.*" | vlc -
したがって、stream_youtube
と言ってスクリプトに名前を付けると、「stream_youtube "search term"
」と入力できます。
しばらく使用せずに試してみたところ、今まで見たことのないウィンドウにいくつかのエラーが表示されるのに気づきましたが、いらいらしながらも機能しました。誰かがそれを役に立つと思うかもしれませんし、少なくとも面白いかもしれません。 :-)
Youtube-dlの出力を任意の形式でffplayにパイプして、ウィンドウを表示することはできません。
例:
youtube-dl -f 251 https://www.youtube.com/watch?v=vdRJMuOFO88 -o - | ffplay -nodisp -autoexit -i -
これはシェルを介して行われますが、両方のアプリにpythonバインディングがあるため、必要に応じてプログラムで行うことができます。