如何在 VLC(命令行)中嵌套引号?

如何在 VLC(命令行)中嵌套引号?

我有一个多节目输入。我想获取每个节目并分别对它们进行转码(因为一个是 16:9,一个是 4:3),然后将每个流 RTP 到不同的地址。

问题是我无法找到一种 VLC 可以接受的嵌套引号的方法。这主要是因为我不仅需要转码和 RTP,还需要选择程序。


cvlc multi-program-input-source.ts 
--sout '#duplicate{
  dst="transcode{width=640,height=360,OTHER_SETTINGS}:rtp{mux=ts,dst=SOMEWHERE,port=20000},select="program=3"",
  dst="transcode{width=704,height=480,OTHER_SETTINGS}:rtp{mux=ts,dst=SOMEWHERE,port=20002},select="program=4""
}'

我愿意接受任何解决方案,但如果有一种方法可以选择不带引号的程序或者以嵌套引号的方式,那就太好了。

答案1

正确的格式是用双引号结束“dst”,然后引用选择语句。

cvlc multi-program-input-source.ts 
--sout '#duplicate{
  dst="transcode{width=640,height=360,OTHER_SETTINGS}:rtp{mux=ts,dst=SOMEWHERE,port=20000}",select="program=3",
  dst="transcode{width=704,height=480,OTHER_SETTINGS}:rtp{mux=ts,dst=SOMEWHERE,port=20002}",select="program=4"
}'

答案2

我不完全确定这是否会起作用,但在很多操作系统中,你可以用反斜杠(“\”)转义内部引号。所以它看起来像这样:

cvlc multi-program-input-source.ts 
--sout '#duplicate{
  dst=\"transcode{width=640,height=360,OTHER_SETTINGS}:rtp{mux=ts,dst=SOMEWHERE,port=20000},select=\"program=3\"",
  dst="transcode{width=704,height=480,OTHER_SETTINGS}:rtp{mux=ts,dst=SOMEWHERE,port=20002},select=\"program=4\""
}'

我可能弄错了需要转义的双引号,但希望使用 \" 转义内部集合可以对你有用。

相关内容