终端在使用youtube-dl和mplayer的YouTube视频流脚本中给出“命令行上的未知选项:-gf”错误

时间:2013-12-09 09:28:49

标签: linux bash youtube mplayer youtube-dl

我制作了一个bash脚本,我可以使用youtube-dl流式传输YouTube视频并使用mplayer播放。我基于这个终端命令:

$ mplayer -ontop -cookies -cookies-file ./cookie.txt $(youtube-dl -gf 34 --cookies ./cookie.txt "https://www.youtube.com/watch?v=<VIDEO ID>")

找到here

手动输入youtube-dl的视频分辨率和网址选项可以正常工作。但是我想创建一个可以使输入更容易的脚本,所以每次我想播放视频时都不必记住整个命令。

剧本:

#!/bin/bash
echo "Input YouTube ID (the string that follows 'http://www.youtube.com/watch?v='):"
echo ""
read video_id
echo ""
echo "Input Video Resolution (17=144, 5=240, 18=360, 35=480, 22=720, or 37=1080):"
echo ""
read resolution
first_string='mplayer -ontop -cookies -cookies-file ./cookie.txt $(youtube-dl -gf res    --cookies ./cookie.txt "https://www.youtube.com/watch?v=VIDEO-ID")'
second_string="${first_string/VIDEO-ID/$video_id}"
last_string="${second_string/res/$resolution}"
$last_string

我已经获得了youtube-dl选项,可以正常使用我设置的字符串替换。当终端尝试读取与youtube-dl相关的选项给出输出时,会出现问题:

Unknown option on the command line: -gf
Error parsing option on the command line: -gf
MPlayer svn r34540 (Ubuntu), built with gcc-4.6 (C) 2000-2012 MPlayer Team

删除-gf并没有太大帮助,给我输出:

Unknown option on the command line: --cookies
Error parsing option on the command line: --cookies
MPlayer svn r34540 (Ubuntu), built with gcc-4.6 (C) 2000-2012 MPlayer Team

我不确定为什么手动输入/复制粘贴命令可以正常使用-gf和--cookies,但是对于bash脚本效果不佳。我使用的是Elementary OS 0.2 Luna 64位(基于Ubuntu 12.04 LTS),Linux内核3.2.057-generic和Bash 4.2.25。任何见解将不胜感激。

1 个答案:

答案 0 :(得分:2)

问题在于first_string的定义。单引号可防止参数扩展,这将停止在子shell中运行的youtube-dl命令。

不是为shell执行构造字符串,而是使用正确的参数运行所需的命令更好。阅读提示后立即:

mplayer -ontop -cookies -cookies-file ./cookie.txt $(youtube-dl -gf "$resolution"    --cookies ./cookie.txt "https://www.youtube.com/watch?v=${video_id}")