パイプなしでyoutube-dlとVLCを組み合わせる

パイプなしでyoutube-dlとVLCを組み合わせる

youtube-dl -o - <webpage> | vlc -VLCにビデオを表示します。しかし、ビデオは管路(このようにfd://0)前方/後方にジャンプする可能性を抑制します。

ただし、youtube-dl -j <webpage>複数の「url」属性を含むJSONデータが一覧表示されます。これにより、vlc <url>VLCはローカルビデオを再生するのと同じように、ビデオの長さ、ジャンプなどを表示します。

質問:URLを抽出するための小さなPythonスクリプトを書くことは完全に可能です。しかし、単純なBash(できるだけ行のコード)を使ってこれを行う簡単な方法はありますか?

注:youtube-dl -jさまざまな品質のビデオストリームが一覧表示されているので、最高品質のビデオを選択するのが最善です。

答え1

シェルからJSONを解析するのは一般的に良い考えではありません。 U&Lのほとんどすべての質問に対する答えは、「シェルでこのJSONをどのように解析するのですか」ということを簡単に見つけることができます。jqまたはjshon)。

youtube-dlそのため、利用可能な複数のビデオバージョンがある場合は、ビデオバージョンを選択してそのURLをダウンロードするのではなく、標準出力に印刷する機能を利用することをお勧めします。

  • --formatまたは-f: 書式を指定できます。最高の品質を得るためにbest。実際には、次の理由でこれが必要ない場合があります(manページを参照youtube-dl(1))。

    デフォルトでは、youtube-dlは利用可能な最高品質をダウンロードしようとします。

  • --get-url、またはは-gビデオのダウンロードを防ぎ、選択したビデオのURLのみを標準出力として印刷します。

次に、機能を利用してvlcURLでビデオを再生(および検索)します。 URLを次に送信できますvlc

youtube-dl --get-url --format best 'https://www.youtube.com/watch?v=video_id' | vlc -

または、vlcコマンド置換を使用してURLを引数として呼び出します。

vlc "$(youtube-dl --get-url --format best 'https://www.youtube.com/watch?v=video_id')"

関連情報