无法在脚本中为 cvlc 指定参数

无法在脚本中为 cvlc 指定参数

我正在创建一个脚本,发出一些 curl 命令以访问受时间保护的 mms 流链接,然后使用 cvlc(vlc 的命令行界面)设置中继,以供我自己在不受限制的播放器上使用。

此功能的 curl 方面正在运行,因为我可以作为浏览器运行并并排 curl 并获得相同的访问 URL。(它是时间锁定的,这意味着流将永远有效,但您必须快速连接,否则 URL 将超时。)

脚本的最后打印出我将运行的命令,然后跟着“exec $CMD”。

当我回应 $CMD 时我得到:
cvlc --sout '#standard{access=http,mux=asf,dst=0.0.0.0:58194}' mms://[...]

手动逐字复制/粘贴此命令可以正常工作,但作为脚本的一部分,cvlc 执行输出显示:

[0x9743d0] 主接口错误:没有合适的接口模块
[0x962120] 主 libvlc 错误:接口“globalhotkeys,none”初始化失败
[0x9743d0] 虚拟接口:使用虚拟接口模块...
[0xb16e30] stream_out_standard 流输出错误:未指定或未找到扩展的 mux
[0xb16ad0] 主流输出错误:`standard{mux="",access="",dst="'#standard{access=http,mux=asf,dst=0.0.0.0:58194}'"}' 的流链失败
[0xb11cd0] 主输入错误:无法启动流输出实例,正在中止
[0xb11f70] 信号接口错误:捕获中断信号,正在退出...

为什么 --sout 在脚本(非交互式 shell?)中的行为是一种方式,而在前台(交互式 shell)中的行为却是另一种方式?

答案1

线程从脚本调用 VLC最后有这样一个有趣的答案:

好的,我已经解决了。实验表明答案是:

#!/bin/bash
VLCCMD="cvlc source.mp3 --sout "#duplicate{dst=std{access=udp,dst=192.168.0.2:1235}}""
echo VLC Command:$VLCCMD
$VLCCMD

我的原始脚本有两处更改:

  • 从 MP3 文件名中删除双引号
  • 将 #duplicate 周围的单引号更改为双引号

相关内容