Привет! Я использовал этот код, который работал с моим старым ТВ-тюнером (он подключался напрямую к моему ПК, и я использовал ТВ для потоковой передачи.

Start ""  "C:\Program Files (x86)\VideoLAN\VLC\vlc" dvb-t://frequency=522000000:bandwidth=0  :dvb-adapter=0 :live-caching=300 :sout=#duplicate{dst=rtp{dst=239.255.1.1,port=5004,mux=ts,ttl=1},dst=display} :sout-keep

Теперь я только что перешел на новую модель ТВ-тюнера и напрямую подключился к моей сети. У меня есть успешный поток, вручную введя все параметры, но я не работаю с моим кодом командной строки. Это началось с не потоковой передачи.

Start ""  "C:\Program Files (x86)\VideoLAN\VLC\vlc" http://User:4a7d1ed414474e4033ac29ccb8653d9b@192.168.165.9:80/basicauth/TVC/Preview?channel=i1:DDvbT2:f522000:mofdm:N8894:T3:S6:P0:E3:b8000:a1;-1;0:q99:Q2000:nCNA+%28HD%29&profile=&stid=2019045506 :sout=#duplicate{dst=rtp{dst=239.255.1.1,port=5004,mux=ts,ttl=1},dst=display} :sout-keep

Пожалуйста, кто-нибудь, помогите мне! :( PS: я использую bat-файл для выполнения скрипта

1 ответ1

0

Синтаксис чтения : Escape-символы, разделители и кавычки. В командной строке vlc есть некоторые символы, которые следует экранировать, чтобы воспринимать их буквально. К сожалению, существуют разные правила разбора и экранирования:

  • из пакетного скрипта:
    • & к ^& (амперсанд: использовать стандартную каретку экранирующего символа ^
    • % до %% (удваивает любой знак процента);
  • из командной строки:
    • & к ^& (амперсанд: использовать стандартную каретку экранирующего символа ^
    • % к ^% (знак процента: также используйте стандартную символьную кавычку ^).

Для лучшей читаемости рассмотрим только эту подстроку, извлеченную из командной строки (содержащую и & и % которые должны быть экранированы):

"vlc" substring :nCNA+%28HD%29&profile=&stid=2019045506
::to be escaped       %    %  &        &                         

Затем для экранирования специальных символов: в командной строке используйте:

"vlc" substring :nCNA+^%28HD^%29^&profile=^&stid=2019045506
::      escaped       ^%    ^%  ^&        ^&          

В пакетном скрипте используйте:

"vlc" substring :nCNA+%%28HD%%29^&profile=^&stid=2019045506
::      escaped       %%    %%  ^&        ^&

ИМХО вам не нужно использовать команду start "" ... ; при необходимости добавьте еще %% и ^^ ... Следующая строка сценария должна работать:

"C:\Program Files (x86)\VideoLAN\VLC\vlc" http://User:4a7d1ed414474e4033ac29ccb8653d9b@192.168.165.9:80/basicauth/TVC/Preview?channel=i1:DDvbT2:f522000:mofdm:N8894:T3:S6:P0:E3:b8000:a1;-1;0:q99:Q2000:nCNA+%%28HD%%29^&profile=^&stid=2019045506 :sout=#duplicate{dst=rtp{dst=239.255.1.1,port=5004,mux=ts,ttl=1},dst=display} :sout-keep

Прочитайте следующий вопрос и ответы StackOverflow: как интерпретатор команд Windows переводит сценарии?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .