下载一次文件并多次播放

下载一次文件并多次播放

我想使用 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 的输出存储在文件中。而不是将命令本身保存在视频变量中。

相关内容