【问题标题】:VLC in Bash ScriptBash 脚本中的 VLC
【发布时间】:2014-11-28 21:42:27
【问题描述】:

我正在尝试编写一个非常基本的 Bash 脚本,它将完成与此命令行相同的事情:

cvlc \
  'rtsp://192.168.0.66/cam/realmonitor?channel=1&subtype=0&authbasic=xxxxxxxxx?tcp' \
   --sout file/mp4:/mnt/recordings/camera16_2014_10_03_13.mp4 \
   --run-time=60 vlc://quit

在命令行中输入这个可以工作,我得到了预期的 60 秒 MP4 文件。将其放入 bash 脚本中,我似乎无法正确地将所有参数传递给 VLC。

#!/bin/bash
camname="CAMERA16"
token="_"
ipadd="192.168.0.66"
runtime="60"
cvlc "rtsp://$ipadd/cam/realmonitor?channel=1&subtype=0&authbasic=xxxxxxxxx?tcp --sout file/mp4:/mnt/recordings/$camname$token$(date +$Y_%m_%d_$H_$M).mp4 --run-time=$runtime vlc://quit"

运行此脚本会启动 VLC,而不是无头,并忽略其他参数。它不会写入文件并且永远不会退出。它只是将 VLC 连接到流并播放流。

我尝试了几种不同的方式来引用论点,但均未成功。所有建议都表示赞赏。

【问题讨论】:

    标签: bash scripting command-line-arguments vlc


    【解决方案1】:

    这些需要是cvlc 命令的单独参数。通过将它们全部放在一个大的双引号字符串中,您可以将它们变成一个单独的参数,这是行不通的。将每个参数放在自己的一组双引号中;不要将空格放在引号内:

    cvlc "rtsp://$ipadd/cam/realmonitor?channel=1&subtype=0&authbasic=xxxxxxxxx?tcp" \
         --sout "file/mp4:/mnt/recordings/$camname$token$(date +$Y_%m_%d_$H_$M).mp4" \
         --run-time="$runtime" vlc://quit
    

    为了便于阅读,我使用带引号的换行符分隔多行;如果没有\s,它也可以只是一条长线。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-31
      • 2014-09-20
      • 2013-02-05
      • 2016-04-10
      • 2012-11-27
      • 2011-06-06
      • 2017-05-14
      • 2022-01-16
      相关资源
      最近更新 更多