DVB-T Sender in der Shell umschalten

Status
Für weitere Antworten geschlossen.

tomas123

Benutzer
Mitglied seit
06. Mrz 2012
Beiträge
99
Punkte für Reaktionen
0
Punkte
0
Frage an die vlc Experten:

Hat jemand schon mal die DVB-T-Scripte der Videostation entschlüsselt?

Veranlassung:
* Ich möchte für den Livestream mit einem Script die Sender umschalten können.
* Das kann ich dann in ein einfaches php-Web-Frontend zur Senderauswahl einbetten.

Hintergund
* Mir ist das Umschalten in DS Video zu umständlich, da DS Video ohne Rückfrage (Auswahl) Airplayer/Gplayer aufruft.

Bisher habe ich herausbekommen:
Der Dienst Videostation startet die Daemons:
Rich (BBCode):
Start der Videostation
31655 root     31628 S N  /var/packages/VideoStation/target/sbin/synovideoindexd
31663 root     31628 S N  /var/packages/VideoStation/target/sbin/synovideometadatad
31877 root     23836 S    /var/packages/VideoStation/target/bin/synodtv start

Wenn man jetzt den Livestream aktiviert wird eine Kette von Prozessen gestartet:
Rich (BBCode):
/var/packages/VideoStation/target/bin/tune "Das Erste"

/var/packages/VideoStation/target/bin/vlc --intf=dummy stream/ts:///dev/dvb/adapter0/dvr0 \
--sout "#std{access=http,dst=127.0.0.126:14,mux=ts}" --sout-ts-

/var/packages/VideoStation/target/bin/cvlc 14 -v #std{access=http,mux=ts,dst=:9006}

/var/packages/VideoStation/target/bin/vlc --intf=dummy http://127.0.0.126:14 \
--sout "#std{access=http,mux=ts,dst=:9006}" --sout-all --sout-ts-es-id-pid vlc://quit

das sieht logisch aus, ich übersetze das mal:
  1. /bin/tune "Das Erste"
  2. /bin/vlc Input "DVB-T Device /dev/dvb/adapter0/dvr0" Output "localhost:14"
  3. /bin/cvlc Input "localhost:14" Output "localhost:9006"
  4. /bin/vlc Input "localhost:14" Output "localhost:9006"
Der erste Port ist Senderabhängig (ARD=14, Pro7=16403). Der zweite Port ist immer 9006.
Ich denke, dass cvlc nur ein wrapper um vlc herum ist (vlc ohne grafische ausgabe)

jetzt kann man die Module zwar einzeln starten, ich bekomme aber die Verkettung der Streams nicht hin

Rich (BBCode):
> /var/packages/VideoStation/target/bin/tune "Das Erste"
channel:Das Erste
tuning to 522000000 Hz
  VIDEO     : PID 0x0579 (0x0002)
  AUDIO     : PID 0x057a
  AUDIO     : PID 0x057b
start vlc, szStreamInput=stream/ts:///dev/dvb/adapter0/dvr0, szStreamOutput=#std{access=http,dst=127.0.0.126:14,mux=ts}
VLC media player 2.0.1 Twoflower (revision 86ea700)
LibVLC has detected an unusable buggy GNU/libc version.
Please update to version 2.8 or newer.
[0x81530] main xml reader error: XML reader not found
[0x7ed60] main interface error: no suitable interface module
[0x120c8] main libvlc error: interface "globalhotkeys,none" initialization failed
[0x7ed60] dummy interface: using the dummy interface module...
[0x85128] access_output_http access out: Consider passing --http-host=IP on the command line instead.
libdvbpsi error (PSI decoder): TS discontinuity (received 12, expected 0) for PID 0
libdvbpsi error (PSI decoder): TS discontinuity (received 9, expected 0) for PID 1400

Rich (BBCode):
> /var/packages/VideoStation/target/bin/cvlc 14 -v "#std{access=http,mux=ts,dst=:9006}"
VLC media player 2.0.1 Twoflower (revision 86ea700)
LibVLC has detected an unusable buggy GNU/libc version.
Please update to version 2.8 or newer.
[0x81558] main xml reader error: XML reader not found
[0x7ed88] main interface error: no suitable interface module
[0x120c8] main libvlc error: interface "globalhotkeys,none" initialization failed
[0x7ed88] dummy interface: using the dummy interface module...
libdvbpsi error (PSI decoder): TS discontinuity (received 12, expected 0) for PID 0
libdvbpsi error (PSI decoder): TS discontinuity (received 12, expected 0) for PID 66
netstat: showing only processes with your user ID
netstat: showing only processes with your user ID

Rich (BBCode):
> /var/packages/VideoStation/target/bin/vlc --intf=dummy http://127.0.0.126:14 --sout "#std{access=http,mux=ts,dst=:9006}" --sout-all --sout-ts-es-id-pid vlc://quit
VLC media player 2.0.1 Twoflower (revision 86ea700)
LibVLC has detected an unusable buggy GNU/libc version.
Please update to version 2.8 or newer.
[0x81558] main xml reader error: XML reader not found
[0x7ed88] main interface error: no suitable interface module
[0x120c8] main libvlc error: interface "globalhotkeys,none" initialization failed
[0x7ed88] dummy interface: using the dummy interface module...
libdvbpsi error (PSI decoder): TS discontinuity (received 8, expected 0) for PID 0
libdvbpsi error (PSI decoder): TS discontinuity (received 8, expected 0) for PID 66

Hat jemand eine Idee, in welchem Syno-DSM-Script sich die Senderumschaltung versteckt?
 

tomas123

Benutzer
Mitglied seit
06. Mrz 2012
Beiträge
99
Punkte für Reaktionen
0
Punkte
0
ich antworte mir mal selbst
Sender umschalten in der Shell erfordert zwei Schritte:

Zuerst den Sender aus der Datei /usr/syno/etc/packages/VideoStation/channels.conf aufrufen
Rich (BBCode):
/var/packages/VideoStation/target/bin/tune "ProSieben" &
jetzt öffnet tune für jeden Sender einen anderen Port
bei Pro7 ist das Port 16403
> cat /usr/syno/etc/packages/VideoStation/channels.conf
ProSieben:658000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTO:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:305:306:16403

dieser kann jetzt im zweiten Schritt mit folgenden Befehl ins LAN auf Port 9006 gestreamt werden (9006 ist der gleiche Port, den die Syno zum DVB-T-Livestream verwendet)
Rich (BBCode):
/var/packages/VideoStation/target/bin/vlc "http://127.0.0.126:16403" --sout "#std{access=http,mux=ts,dst=:9006}"
Es wird kein Timeout gesetzt, d.h. der Stream steht endlos zur Verfügung (Vorsicht bei Timeraufnahmen)

jetzt kann der Livestream im VLC oder IPAD (Goodplayer etc) mit
Rich (BBCode):
http://MeineSynoIP:9006
abgerufen werden


Info: die syno verwendet intern cvlc
dieses setzt einen Timeout,d.h. wenn keiner streaming client verbunden ist, beendet sich cvlc nach 40 Sekunden selbst
dadurch wird der DVB-Stick für Timeraufnamen wieder frei

Der obige zweite Schritt kann somit ersetzt werden mit
Rich (BBCode):
 /var/packages/VideoStation/target/bin/cvlc 16403 -v "#std{access=http,mux=ts,dst=:9006}"
man kann den Timer beobachten mit
Rich (BBCode):
tail -f /var/log/synodtv.log
09/29/12 10:37:29 [cvlc.c:182]: broadcast check: http connections=1, nobodyCount=0(exit value:10)
09/29/12 10:37:32 [cvlc.c:182]: broadcast check: http connections=1, nobodyCount=0(exit value:10)
09/29/12 10:37:35 [cvlc.c:182]: broadcast check: http connections=1, nobodyCount=0(exit value:10)
09/29/12 10:37:38 [cvlc.c:182]: broadcast check: http connections=1, nobodyCount=0(exit value:10)
09/29/12 10:37:42 [cvlc.c:182]: broadcast check: http connections=1, nobodyCount=0(exit value:10)
09/29/12 10:37:45 [cvlc.c:182]: broadcast check: http connections=1, nobodyCount=0(exit value:10)
09/29/12 10:37:48 [cvlc.c:182]: broadcast check: http connections=1, nobodyCount=0(exit value:10)
09/29/12 10:37:51 [cvlc.c:182]: broadcast check: http connections=0, nobodyCount=0(exit value:10)
09/29/12 10:37:54 [cvlc.c:182]: broadcast check: http connections=0, nobodyCount=1(exit value:10)
09/29/12 10:37:57 [cvlc.c:182]: broadcast check: http connections=0, nobodyCount=2(exit value:10)
09/29/12 10:38:00 [cvlc.c:182]: broadcast check: http connections=0, nobodyCount=3(exit value:10)
09/29/12 10:38:03 [cvlc.c:182]: broadcast check: http connections=0, nobodyCount=4(exit value:10)
09/29/12 10:38:06 [cvlc.c:182]: broadcast check: http connections=0, nobodyCount=5(exit value:10)
09/29/12 10:38:10 [cvlc.c:182]: broadcast check: http connections=0, nobodyCount=6(exit value:10)
09/29/12 10:38:13 [cvlc.c:182]: broadcast check: http connections=0, nobodyCount=7(exit value:10)
09/29/12 10:38:16 [cvlc.c:182]: broadcast check: http connections=0, nobodyCount=8(exit value:10)
09/29/12 10:38:19 [cvlc.c:182]: broadcast check: http connections=0, nobodyCount=9(exit value:10)
09/29/12 10:38:22 [cvlc.c:182]: broadcast check: http connections=0, nobodyCount=10(exit value:10)
09/29/12 10:38:25 [cvlc.c:182]: broadcast check: http connections=0, nobodyCount=11(exit value:10)
09/29/12 10:38:28 [cvlc.c:182]: broadcast check: http connections=0, nobodyCount=12(exit value:10)
09/29/12 10:38:28 [cvlc.c:212]: vlc exited with errno(0)
 
Zuletzt bearbeitet:

qbertl

Benutzer
Mitglied seit
10. Sep 2012
Beiträge
18
Punkte für Reaktionen
0
Punkte
0
Hi tomas123,

sieht interessant aus,
vielleicht kannst Du mir einen Tip geben, wo ich schauen kann warum bei mir alle Programme zu streamen gehen, außer 3sat.
Trotz mehrmaligen Sendersuchlauf, anderer Channels.conf, Videostation deinstalliert und wieder installiert.
Im VLC versucht er eine Verbindung aufzubauen, sehe auch am DVB-t Stick, daß kurz die LED auf grün geht und dann wieder aus, bzw. orange leuchtet. Bedeutet dann kein stream.
Schalte ich auf ein anderes Programm zb. ARD, geht der stream einwandfrei, ergo ich sehe auch ein Bild und Ton.
Komischerweise habe ich bei 3sat auch ein EPG.
Um auszuschließen obs am Stick oder am Empfang liegt, habe ich den DVB-t Stick auch am PC und an einem anderen Rechner mit Suse ausprobiert. Am Suse Rechner lädt der Kernel den gleichen Treiber wie auf der DS212+. Unter Kaffeine funktionierts problemlos an der gleichen Antenne.
Wird da vielleicht etwas geblockt, oder sendet 3sat ein anderes Format? und die Videostaton kann das nicht verarbeiten?

Gruß qbertl
 

tomas123

Benutzer
Mitglied seit
06. Mrz 2012
Beiträge
99
Punkte für Reaktionen
0
Punkte
0
das kann 1000 Gründe haben
manch Kanäle werden mit weniger Sendeleistung ausgestrahlt und vielleicht ist gerade an der Syno ein Funkloch

ich würde die einzelnen Schritte manuell (wie oben dargestellt) austesten
in der shell bekommst Du auch genügend Fehlermeldung (s. auch /var/log/synodtv.log)
 

qbertl

Benutzer
Mitglied seit
10. Sep 2012
Beiträge
18
Punkte für Reaktionen
0
Punkte
0
Hallo tomas123,

Ok, habe mal den letzten Log Eintrag der synotv, was passiert beim Versuch 3sat zu streamen:
09/30/12 12:14:02 [daemon.cpp:139]: -----Stream start Result-->-1
09/30/12 12:14:02 [synodtv.cpp:104]: Now state:[1]
09/30/12 12:14:02 [synodtv.cpp:106]: next_repeat_time:-1
09/30/12 12:14:02 [data.cpp:301]: Next[1349071697,1800,0,,0]
09/30/12 12:14:02 [synodtv.cpp:124]: daemon sleep: 71475 sec, then active some event
09/30/12 12:14:02 [post_handler.cpp:855]: Can't start http stream
09/30/12 12:14:02 [daemon.cpp:14]: Trasition recevied 2
09/30/12 12:14:02 [daemon.cpp:124]: [1]--stream start-->
09/30/12 12:14:07 [daemon.cpp:300]: Binary(4)[pid=24885] exited value:254
09/30/12 12:14:07 [daemon.cpp:432]: [1]--tune stopped-->
09/30/12 12:14:14 [daemon.cpp:569]: try Tune Lock result:-1
09/30/12 12:14:14 [daemon.cpp:575]: tune unlock
09/30/12 12:14:14 [daemon.cpp:139]: -----Stream start Result-->-1
09/30/12 12:14:14 [synodtv.cpp:104]: Now state:[1]
09/30/12 12:14:14 [synodtv.cpp:106]: next_repeat_time:-1
09/30/12 12:14:14 [data.cpp:301]: Next[1349071697,1800,0,,0]
09/30/12 12:14:14 [synodtv.cpp:124]: daemon sleep: 71463 sec, then active some event
09/30/12 12:14:14 [post_handler.cpp:855]: Can't start http stream

Und die Crash Log Info von VLC:

main debug: using interface module "macosx"
main debug: TIMER module_need() : 203.109 ms - Total 203.109 ms / 1 intvls (Avg 203.109 ms)
main debug: playlist threads correctly activated
main debug: rebuilding array of current - root Wiedergabeliste
main debug: rebuild done - 0 items, index -1
macosx debug: using Snow Leopard AR cookies
main debug: looking for services probe module: 5 candidates
main debug: no services probe module matching "any" could be loaded
main debug: TIMER module_need() : 20.693 ms - Total 20.693 ms / 1 intvls (Avg 20.693 ms)
main debug: looking for extension module: 1 candidate
lua debug: Opening Lua Extension module
lua debug: Trying Lua scripts in /Users/qbert/Library/Application Support/org.videolan.vlc/lua/extensions
lua debug: Trying Lua scripts in /Applications/VLC.app/Contents/MacOS/share/lua/extensions
lua debug: Trying Lua scripts in /Applications/VLC.app/Contents/MacOS/share/share/lua/extensions
main debug: using extension module "lua"
main debug: TIMER module_need() : 0.183 ms - Total 0.183 ms / 1 intvls (Avg 0.183 ms)
macosx debug: Found 0 capture devices
main debug: adding item `http://192.168.2.66:5000/VideoStation/livestreaming' ( http://192.168.2.66:5000/VideoStation/livestreaming )
main debug: no fetch required for (null) (art currently (null))
main debug: rebuilding array of current - root Wiedergabeliste
main debug: rebuild done - 1 items, index -1
main debug: processing request item: http://192.168.2.66:5000/VideoStation/livestreaming, node: Wiedergabeliste, skip: 0
main debug: resyncing on http://192.168.2.66:5000/VideoStation/livestreaming
main debug: http://192.168.2.66:5000/VideoStation/livestreaming is at 0
main debug: starting playback of the new playlist item
main debug: resyncing on http://192.168.2.66:5000/VideoStation/livestreaming
main debug: http://192.168.2.66:5000/VideoStation/livestreaming is at 0
main debug: creating new input thread
main debug: Creating an input for 'http://192.168.2.66:5000/VideoStation/livestreaming'
main debug: using timeshift granularity of 50 MiB, in path '/tmp'
main debug: `http://192.168.2.66:5000/VideoStation/livestreaming' gives access `http' demux `' path `192.168.2.66:5000/VideoStation/livestreaming'
main debug: creating demux: access='http' demux='' location='192.168.2.66:5000/VideoStation/livestreaming' file='(null)'
main debug: looking for access_demux module: 0 candidates
main debug: no access_demux module matched "http"
main debug: TIMER module_need() : 0.081 ms - Total 0.081 ms / 1 intvls (Avg 0.081 ms)
main debug: creating access 'http' location='192.168.2.66:5000/VideoStation/livestreaming', path='(null)'
main debug: looking for access module: 2 candidates
access_http debug: http: server='192.168.2.66' port=5000 file='/VideoStation/livestreaming'
main debug: net: connecting to 192.168.2.66 port 5000
main debug: connection succeeded (socket = 8)
macosx debug: no optical media found
access_http debug: protocol 'HTTP' answer code 500
access_http error: error: HTTP/1.1 500 Internal Server Error
access_http debug: switching to HTTP version 1.0
main debug: net: connecting to 192.168.2.66 port 5000
main debug: connection succeeded (socket = 8)
access_http debug: protocol 'HTTP' answer code 500
access_http error: error: HTTP/1.1 500 Internal Server Error
main debug: net: connecting to 192.168.2.66 port 5000
main debug: connection succeeded (socket = 8)
access_mms error: error: HTTP/1.1 500 Internal Server Error
main debug: no access module matching "http" could be loaded
main debug: TIMER module_need() : 35160.641 ms - Total 35160.641 ms / 1 intvls (Avg 35160.641 ms)
main error: open of `http://192.168.2.66:5000/VideoStation/livestreaming' failed
main debug: dead input
main debug: changing item without a request (current 0/1)
main debug: nothing to play
main debug: TIMER input launching for 'http://192.168.2.66:5000/VideoStation/livestreaming' : 35183.719 ms - Total 35183.719 ms / 1 intvls (Avg 35183.719 ms)

Vielleicht kannst mir einen Hinweis geben, nach was ich schauen kann.
Wie gesagt, seltsamerweise gehen alle Programme außer 3sat.
Beim Testen mit einem anderen PC, habe ich die Antennnposition nicht verändert!


Grüße qbertl
 

tomas123

Benutzer
Mitglied seit
06. Mrz 2012
Beiträge
99
Punkte für Reaktionen
0
Punkte
0
hi qbertl,

obwohl Deine Frage off-topic war habe ich netterweise Dir einen Tip gegeben (Funkloch und Schritte in der Shell einzeln durchgehen)

Erstens hast Du meine Rat "Schritte einzeln in der Shell durchgehen (was ja irgendwie noch zum Threadthema passt)" nicht befolgt
und zweitens enterst Du jetzt meinen Thread "DVB-T Sender in der Shell umschalten" ...

Ehrlich, ich weiß wirklich nicht, warum bei Dir alle Sender außer 3Sat gehen (Can't start http stream).
Vielleicht machst Du besser einen eigenen Thread auf - unter Deinem eigenem Threadtitel erreichst vielleichst mehr
 
Zuletzt bearbeitet:

p1234321

Benutzer
Mitglied seit
13. Apr 2015
Beiträge
1
Punkte für Reaktionen
0
Punkte
0
Hallo,
Vielen dank für die beschreibung deiner lösung.
Ich bin neu hier im forum und generell habe ich noch wenig erfahrung mit synology.
Gibt es auch eine einfachere möglichkeit die kanäle zu wechseln wenn man über die diskstation streamt?
gibt es ein plugin für vlc player? oder muss man das über die shell machen?

vielen dank

paul
 

danield

Benutzer
Mitglied seit
25. Aug 2015
Beiträge
5
Punkte für Reaktionen
0
Punkte
0
Hallo,

weil der thread so viele spannende Infos enthält, aber leider schon so alt ist, bin ich doch so frech und pushe ihn mit folgender Frage:

Wenn ich als admin über ssh angemeldet bin, bekomme ich als Rückgabe auf den Zugriff von synodtv.log nur folgende Antwort:
tail /var/log/synodtv.log
tail: can't open '/var/log/synodtv.log': Permission denied
tail: no files

Wurden bestimmte Dateien mittlerweile gesperrt, oder wieso wird der Zugriff auf eine log-Datei verweigert?

Gruß, Daniel.
 

rednag

Benutzer
Mitglied seit
08. Nov 2013
Beiträge
3.954
Punkte für Reaktionen
11
Punkte
104
@Daniel

Du mußt Dich als root anmelden. Seit DSM 6 geht das noch noch per Key.
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat