ファイルを一度ダウンロードして複数回再生

ファイルを一度ダウンロードして複数回再生

mplayerを使用して端末でYouTubeビデオを繰り返したいです。これを行うには、次のコードを書きました。

#!/bin/bash

if [[ $(echo $*) ]]; then
    searchterm="$*"
else
    read -p "Enter the video ID: " searchterm
fi

searchterm=$(echo $searchterm | sed -e 's/\ /+/g')

video=$(youtube-dl -g https://youtube.com/v/$searchterm)

while true; 
do 
    mplayer $video
    sleep 2; 
done

ビデオを再生するには、スクリプトにビデオIDを提供する必要があります。たとえば、今見ている動画が次のような場合:https://www.youtube.com/watch?v=daQhI1JFXn4v=だからビデオIDは後半です。daQhI1JFXn4

繰り返されるたびにビデオをダウンロードすることを除いて、すべてがうまく機能します。ファイルを一度だけダウンロードして再生し続けるように変更する方法があるかどうか疑問に思います。

答え1

私はこれでうまくいくのを見つけましたがavplay(必要に応じて置き換えることができますffplay)、mplayerのままにします。tee- ファイルに保存し、最初の再生時に有効にパイプします。以前にファイルがダウンロードされたことを確認するためのスキャンを追加しました。

#!/bin/bash

if [[ $(echo $*) ]]; then
    searchterm="$*"
else
    read -p "Enter the video ID: " searchterm
fi

searchterm=$(echo $searchterm | sed -e 's/\ /+/g')

video=$(youtube-dl -g https://youtube.com/v/$searchterm)

[[ -f $searchterm.mp4 ]] || wget -O - $video 2>/dev/null | tee $searchterm.mp4 | mplayer -

while true; 
do
    sleep 2;
    mplayer $searchterm.mp4
done

答え2

リダイレクトを介してYouTube-dlの出力をファイルに保存します。コマンド自体をビデオ変数に保存する代わりに。

関連情報