다중 프로그램 입력이 있습니다. 각 프로그램을 가져 와서 각각을 개별적으로 트랜스 코딩하고 싶습니다 (하나는 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""
}'
나는 어떤 해결책에도 열려 있지만 따옴표없이 또는 프로그램을 중첩 할 수있는 방법으로 프로그램을 선택할 수있는 방법이 있다면 좋을 것입니다.
답변
올바른 형식은 “dst”를 큰 따옴표로 끝내고 select 문을 인용하는 것입니다.
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"
}'
답변
이것이 제대로 작동하는지는 확실하지 않지만 많은 운영 체제에서 백 슬래시 (\ “)로 내부 따옴표를 이스케이프 처리 할 수 있습니다. 따라서 다음과 같이됩니다.
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\""
}'
큰 따옴표를 이스케이프 처리해야 할 필요가 있지만 내부 세트를 \ “로 이스케이프 처리하면 좋을 것입니다.