我有一个多节目输入。我想获取每个节目并分别对它们进行转码(因为一个是 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\""
}'
我可能弄错了需要转义的双引号,但希望使用 \" 转义内部集合可以对你有用。