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の出力をファイルに保存します。コマンド自体をビデオ変数に保存する代わりに。