我设计了一个脚本,可以轻松快速地从 YouTube 下载视频,该脚本使用末尾的选项来询问您是否要下载另一个视频。
这是我的脚本:
#!/bin/bash
cd ~/Videos
read -p "Enter A Valid YouTube URL: " url
reset
youtube-dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/mp4' $url
reset
while true; do
read -p "Do you wish to download another? " yn
case $yn in
[Yy]* ) reset; cd ~/Desktop; ./Youtube-DL-Video.sh;;
[Nn]* ) exit;;
* ) echo "Please answer yes or no.";;
esac
done
我的目标
我想添加一个选项来播放刚刚下载的文件(通过 OMXPlayer)。
Youtube-DL 是否有任何命令可以提供下载路径?
答案1
youtube-dl
有--output
允许您设置输出目的地的选项:
-o, --输出TEMPLATE
输出文件名模板,参见“输出模板“ 对于所有信息
作为示例,我使用以下模板
--output "$XDG_DOWNLOAD_DIR/youtube/%(title)s.%(ext)s"
它将视频下载到youtube
我的下载目录中的文件夹中,并使用视频标题作为文件名。
为了添加一个选项来播放您刚刚下载的文件,您可以使用--get-filename
不下载视频但仅返回与您的模板相对应的文件名的选项:
youtube-dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/mp4' -o <insert_your_ template_here> $url
file=$(youtube-dl -o <insert_your_template_here> --get-filename)
...
<video_player> $file
答案2
如果您的目的是通过 omxplayer 播放网络视频以利用 Raspberry Pi 硬件加速。
您可以使用 youtube-dl 获取实际视频的 URL,然后使用 omxplayer(或 vlc,播放起来更方便,而且速度也更快)进行流式传输。
这是我使用的别名:
alias omxstream='_(){ omxplayer `youtube-dl --get-url --format best[ext=mp4]/best $1`; };_'
如果您想在简单的管道命令周围使用更多代码,您也可以使用函数来执行此操作:
function replay {
if test -z $1 ; then
echo -e "No arguments specified. Usage:\n${FUNCNAME[0]} replay-web-page-url"
return 1
fi
# both omxplayer and vlc are hardware accelerated on Raspberry Pi
vlc --fullscreen `youtube-dl --get-url --format best[ext=mp4]/best $1`
}
也可以使用脚本来完成此操作。
作为记录,这是我的当前版本.bash_aliases
文件。