Streaming

Aus M740 WikiWeb

Wechseln zu: Navigation, Suche


Inhaltsverzeichnis

AV Streaming mit der Box

Eine WikiSeite um die benötigten Infos zum Streaming-Interface zusammenzutragen.

Funktion der Komunikation

Die Kommunikation wird über den Port 10001 per XML geführt. Darüber wird auch das Streaming aktiviert, welches dann über den Standard Port des VLC (1234) geführt wird. Diese Verbindung hat nichts mit dem UPNP Server zu tun.

Um eine Verbindung mit der Box herzustellen, wird zuerst der Connection Request (Verbindungs Request) gesendet. Auf die Antwort der Box mit einer Return Value, der aus einer 15-stelligen Zahl besteht, sendet der Rechner zur "Identifizierung" eine Sessionid (Verbindungs Identify).


Verbindungs Request

Connection Request: baut eine Verbindung zur Box

<Message><Command type="connection" subject="request"/></Message><//>

Antwort der Box:

<?xml version="1.0" encoding="ISO-8859-1"?>
<Message>
 <Return value="386452781266304"/>
</Message>
<//>

Verbindungs Identify

Identifizierung nach dem Herstellen der Verbindung.

<Message><Command type="connection" subject="identify"><Parameter key="sessionId" value="38645"/></Command></Message><//>

Zum berechen der Sessionid

Antwort der Box:

Standard Antwort

Standard Antwort

<?xml version="1.0" encoding="ISO-8859-1"?>
<Message>
 <Return value="0"/>            -> 0 wenn kein Fehler aufgeteten ist  -1 bei Fehlern
</Message>
<//>

Model der Box auslesen

<Message>
<Command type="request" subject="model"/>
</Message>
<//>

Antwort:

<?xml version="1.0" encoding="ISO-8859-1"?>
<ModelDescription>
 <Model>M740AV</Model>
 <Hardware>
  <Version>1</Version>
  <Tuner>2</Tuner>
 </Hardware>
 <Software>
  <Version>
   <Major>2</Major>
   <Minor>0</Minor>
   <Micro>36</Micro>
  </Version>
 </Software>
</ModelDescription>
<//>

Einstellungen auslesen

<Message>
<Command type="request" subject="settings"/>
</Message>
<//>

Antwort:

<?xml version="1.0" encoding="ISO-8859-1"?>
<Settings>
 <General>
  <Software>1</Software>
  <PowerSaveMode>0</PowerSaveMode>
  <LastClubClipsUpload>0</LastClubClipsUpload>
  <LastEpgUpload>0</LastEpgUpload>
 </General>
 <Osd>
  <Sound>1</Sound>
  <Transparency>30</Transparency>
  <DisplayDuration>4</DisplayDuration>
  <Skin>1</Skin>
  <MenuLanguage>0</MenuLanguage>
  <LedBrightness>0</LedBrightness>
  <TimeSelection>15</TimeSelection>
 </Osd>
 <Tv>
  <ImageFormat>0</ImageFormat>
  <VideoFormat>0</VideoFormat>
  <AudioLanguage>0</AudioLanguage>
  <AudioOutput>1</AudioOutput>
  <Volume>186</Volume>
  <Pip>2</Pip>
 </Tv>
 <Pvr>
 <RecordingFolder>/pvr/media/PC1/tmp</RecordingFolder>
  <Forerun>5</Forerun>
  <FollowUp>25</FollowUp>
  <TimeshiftBuffer>45</TimeshiftBuffer>
  <WarmupTime>3</WarmupTime>
 </Pvr>
 <Network>
  <Dhcp>0</Dhcp>
  <Name>M740AV</Name>
  <Ip>192.168.000.010</Ip>
  <Subnet>255.255.255.000</Subnet>
  <Gateway>192.168.000.001</Gateway>
  <Share id="0">
   <UserName>User</UserName>
   <Password>Passwort</Password>
   <Workgroup>LinuxHeimnetz</Workgroup>
   <Pc>192.168.0.11</Pc>
   <Folder>musik</Folder>
  </Share>
  <Share id="1">
   <UserName>user2</UserName>
   <Password>passwor2</Password>
   <Workgroup>LinuxHeimnetz</Workgroup>
   <Pc>192.168.0.12</Pc>
   <Folder>Filme</Folder>
  </Share>
 </Network>
</Settings>
<//>


Einstellungen setzten

Setzen vorbereiten:

<Message><Command type="order" subject="settings"/></Message><//>

Antwort der Box:

Standard Antwort

Setzen durchführen:

<?xml version="1.0" encoding="ISO-8859-1"?>
<Settings>
<General>
 <PowerSaveMode>0</PowerSaveMode>
</General>
<Osd>
 <Sound>1</Sound>
 <Transparency>30</Transparency>
 <DisplayDuration>4</DisplayDuration>
 <Skin>1</Skin>
 <MenuLanguage>0</MenuLanguage>
 <LedBrightness>0</LedBrightness>
</Osd>
<Tv>
 <ImageFormat>0</ImageFormat>
 <VideoFormat>0</VideoFormat>
 <AudioLanguage>0</AudioLanguage>
 <AudioOutput>1</AudioOutput>
 <Pip>2</Pip>
</Tv>
<Pvr>
 <RecordingFolder>/pvr/media/PC1/tmp</RecordingFolder>
 <Forerun>5</Forerun>
 <FollowUp>25</FollowUp>
 <TimeshiftBuffer>45</TimeshiftBuffer>
 <WarmupTime>2</WarmupTime>
</Pvr>
<Network>
 <Dhcp>0</Dhcp>
 <Name>M740AV</Name>
 <Ip>192.168.000.020</Ip>
 <Subnet>255.255.255.000</Subnet>
 <Gateway>192.168.000.001</Gateway>
<Share id="0">
 <UserName>xxx</UserName>
 <Password>xxx</Password>
 <Workgroup>123</Workgroup>
 <Pc>192.168.0.11</Pc>
 <Folder>Musik</Folder>
</Share>
<Share id="1">
 <UserName>yyy</UserName>
 <Password>yyy</Password>
 <Workgroup>123</Workgroup>
 <Pc>192.168.0.98</Pc>
 <Folder>Filme</Folder>
</Share>
<Share id="2">
 <UserName>---</UserName>
 <Password>---</Password>
 <Workgroup>---</Workgroup>
 <Pc>---</Pc>
 <Folder>---</Folder>
</Share>
<Share id="3">
 <UserName>---</UserName>
 <Password>---</Password>
 <Workgroup>---</Workgroup>
 <Pc>---</Pc>
 <Folder>---</Folder>
</Share>
<Share id="4">
 <UserName>---</UserName>
 <Password>---</Password>
 <Workgroup>---</Workgroup>
 <Pc>---</Pc>
 <Folder>---</Folder>
</Share>
</Network>
</Settings>
<//>

Antwort der Box:

Standard Antwort

Start des Streaming per XML

<Message>
<Command type="order" subject="rtp_streaming">
<Parameter key="enable" value="1"/>
<Parameter key="ip" value="192.168.0.10"/>
<Parameter key="port" value="1234"/>
<Parameter key="player" value="0"/>
</Command>
</Message>
<//>

Streaming beenden

<Message>
<Command type="order" subject="stop_crid"/>
</Message>
<//>

Antwort der Box:

Standard Antwort

Programm TV-Ausgabe umschalten

Umschalten der

<Message>
<Command type="remote" subject="7"/>
</Message>
<//>

Antwort der Box:

Standard Antwort

Programm Stream umschalten

Das Umschalten für den Tuner der gerade nicht von der Box für TV-Ausgabe belegt ist.

Vorbereiten mit:

<Message>
<Command type="order" subject="rtp_streaming">
<Parameter key="enable" value="1"/>
<Parameter key="ip" value="192.168.0.98"/>
<Parameter key="port" value="1234"/>
<Parameter key="player" value="0"/>
</Command>
</Message>
<//

Antwort der Box:

Standard Antwort

Nach der Antwort Sender Auswählen mit:

<Message>
<Command type="order" subject="tune_live"/>
<Parameter key="index" value="3"/>             => Umschalten des Streams auf Programm 4
</Message>
<//

Antwort der Box:

Standard Antwort

Programmliste Auslesen

<Message><Command type="request" subject="channel_list"/></Message><//>

Antwort:

<Message><Command type="request" subject="channel_list"/></Message><//>
<?xml version="1.0" encoding="ISO-8859-1"?>
<ChannelList>
 <Channel orderId="0" serviceId="10002" serviceName="Das Erste" />
 <Channel orderId="1" serviceId="10037" serviceName=".ZDF" />
 <Channel orderId="2" serviceId="10035" serviceName="VOX" />
 <Channel orderId="3" serviceId="10027" serviceName="SAT.1" />
 <Channel orderId="4" serviceId="10026" serviceName=".RTL Television" />
 <Channel orderId="5" serviceId="10012" serviceName="KABEL1" />
 <Channel orderId="6" serviceId="10022" serviceName="ProSieben" />
 <Channel orderId="7" serviceId="10025" serviceName="RTL2" />
 <Channel orderId="8" serviceId="10104" serviceName=".Super RTL" />
 <Channel orderId="9" serviceId="10009" serviceName="Eurosport" />
 <Channel orderId="10" serviceId="10016" serviceName="N24" />
 <Channel orderId="11" serviceId="10013" serviceName=".Doku/KiKa" />
 <Channel orderId="12" serviceId="10000" serviceName=".Info/3sat" />
 <Channel orderId="13" serviceId="10003" serviceName="arte" />
 <Channel orderId="14" serviceId="10109" serviceName="TERRA NOVA" />
 <Channel orderId="15" serviceId="10014" serviceName="MDR FERNSEHEN" />
 <Channel orderId="16" serviceId="10102" serviceName="WDR Dortmund" />
 <Channel orderId="17" serviceId="10021" serviceName="Phoenix" />
 <Channel orderId="18" serviceId="10023" serviceName="CNN Int." />
 <Channel orderId="19" serviceId="10034" serviceName="VIVA" />
 <Channel orderId="20" serviceId="10100" serviceName="NDR FS NDS" />
 <Channel orderId="21" serviceId="10108" serviceName="WDR Wuppertal *" />
 <Channel orderId="22" serviceId="10101" serviceName=".S.DWEST RP" />
 <Channel orderId="23" serviceId="10103" serviceName="WDR Essen *" />
 <Channel orderId="24" serviceId="10105" serviceName="NDR FS NDS" />
 <Channel orderId="25" serviceId="10106" serviceName=".S.DWEST RP" />
 <Channel orderId="26" serviceId="10107" serviceName=".WDR D.sseldorf" />
 <Channel orderId="27" serviceId="10110" serviceName="EinsPlus" />
 <Channel orderId="28" serviceId="10114" serviceName="MDR FERNSEHEN" />
</ChannelList>
<//>

Dies Liste entspricht der Zuordnung in der "/var/etc/user_services.txt". Die "serviceId" findet dann in der "/var/etc/services.txt" die Zuordnung zum Sender (Letzte Spalte in der Datei).

Playlisten

Playlist Audio

<Message><Command type="request" subject="playlist"><Parameter key="playlistType" value="audio"/></Command></Message><//>

Antwort (ohne vorhandene Playlist):

<?xml version="1.0" encoding="ISO-8859-1"?>
<Playlist>
<Name>(null)</Name>
<MimeType>(null)</MimeType>
<Size>0</Size>
<PlaybackMode>1</PlaybackMode>
<Looping>1</Looping>
</Playlist>
<//>

Playlist Video

<Message><Command type="request" subject="playlist"><Parameter key="playlistType" value="video"/></Command></Message><//>

Antwort (ohne vorhandene Playlist)

<?xml version="1.0" encoding="ISO-8859-1"?>
<Playlist>
<Name>(null)</Name>
<MimeType>(null)</MimeType>
<Size>0</Size>
<PlaybackMode>1</PlaybackMode>
<Looping>1</Looping>
</Playlist>
<//>

Playlist Bilder

<Message><Command type="request" subject="playlist"><Parameter key="playlistType" value="photo"/></Command></Message><//>

Antwort (ohne vorhandene Playlist)

<?xml version="1.0" encoding="ISO-8859-1"?>
<Playlist>
<Name>(null)</Name>
<MimeType>(null)</MimeType>
<Size>0</Size>
<PlaybackMode>1</PlaybackMode>
<Looping>1</Looping>
</Playlist>
<//>

EPG auslesen

<Message>
 <Command type="request" subject="epg_channel">
  <Parameter key="serviceId" value="10002"/>
  <Parameter key="startTime" value="1130558400"/>
  <Parameter key="endTime" value="1130644799"/>
 </Command>
</Message>
<//>

Antwort: (gekürzt)

<?xml version="1.0" encoding="ISO-8859-1"?>
 <CridList>
  <Crid id="113055810010002">
   <Title>Blinky Bill</Title>
   <ServiceId>10002</ServiceId>
   <StartTime>1130558100</StartTime>
   <EndTime>1130559600</EndTime>
   <RecordingDuration>-1</RecordingDuration>
   <RecordingStatus>0</RecordingStatus>
   <RecordingType>32</RecordingType>
   <PermanentFlag>0</PermanentFlag>
  </Crid>
  <Crid id="113055960010002">
   <Title>Fix & Foxi</Title>
   <ServiceId>10002</ServiceId>
   <StartTime>1130559600</StartTime>
   <EndTime>1130560800</EndTime>
   <RecordingDuration>-1</RecordingDuration>
   <RecordingStatus>0</RecordingStatus>
   <RecordingType>32</RecordingType>
   <PermanentFlag>0</PermanentFlag>
  </Crid>
  <Crid id="113056080010002">
   <Title>Tom, Jerry & Co.</Title>
   <ServiceId>10002</ServiceId>
   <StartTime>1130560800</StartTime>
   <EndTime>1130562600</EndTime>
   <RecordingDuration>-1</RecordingDuration>
   <RecordingStatus>0</RecordingStatus>
   <RecordingType>32</RecordingType>
   <PermanentFlag>0</PermanentFlag>
  </Crid>
  <Crid id="113056260010002">
   <Title>Gloria und ihre Familie</Title>
   <ServiceId>10002</ServiceId>
   <StartTime>1130562600</StartTime>
   <EndTime>1130564100</EndTime>
   <RecordingDuration>-1</RecordingDuration>
   <RecordingStatus>0</RecordingStatus>
   <RecordingType>32</RecordingType>
   <PermanentFlag>0</PermanentFlag>
  </Crid>
  .
  .
  .
  <Crid id="113064390010002">
   <Title>Die sch.nsten Bahnstrecken Europas</Title>
   <ServiceId>10002</ServiceId>
   <StartTime>1130643900</StartTime>
   <EndTime>1130644500</EndTime>
   <RecordingDuration>-1</RecordingDuration>
   <RecordingStatus>0</RecordingStatus>
   <RecordingType>32</RecordingType>
   <PermanentFlag>0</PermanentFlag>
  </Crid>
  <Crid id="113064450010002">
   <Title>Tagesschau</Title>
   <ServiceId>10002</ServiceId>
   <StartTime>1130644500</StartTime>
   <EndTime>1130644800</EndTime>
   <RecordingDuration>-1</RecordingDuration>
   <RecordingStatus>0</RecordingStatus>
   <RecordingType>32</RecordingType>
   <PermanentFlag>0</PermanentFlag>
  </Crid>
</CridList>
<//>

Timer

Timer Auslesen

<Message><Command type="request" subject="timer_list"/></Message><//>

Antwort ohne gesetzte Timer:

<?xml version="1.0" encoding="ISO-8859-1"?>
<CridList>
</CridList>
<//>

Antwort mit zwei Timern wobei der erste eine Serie ist:

<?xml version="1.0" encoding="ISO-8859-1"?>
<CridList>
 <Crid id="1131312060010001">
  <Title>Stromberg</Title>
  <ServiceId>10001</ServiceId>
  <StartTime>1131312060</StartTime>
  <EndTime>1131314280</EndTime>
  <RecordingDuration>-1</RecordingDuration>
  <RecordingStatus>1</RecordingStatus>
  <RecordingType>8</RecordingType>
  <Series id="-1131296553" hdd="11" mo="0" tu="0" we="0" th="0" fr="0" sa="0" su="1" />
  <PermanentFlag>0</PermanentFlag>
 </Crid>
 <Crid id="116275410010022">         => einzelne Aufnahme per EPG Programmiert
  <Title>(T)Raumschiff Surprise - Periode 1</Title>
  <ServiceId>10022</ServiceId>
  <StartTime>1162754100</StartTime>
  <EndTime>1162761660</EndTime>
  <RecordingDuration>-1</RecordingDuration>
  <RecordingStatus>1</RecordingStatus>
  <RecordingType>1</RecordingType>
  <PermanentFlag>0</PermanentFlag>
</Crid>
<Crid id="116286300010025">           => Keyword Timer
 <Title>24</Title>
 <ServiceId>10025</ServiceId>
 <StartTime>1162863000</StartTime>
 <EndTime>1162865700</EndTime>
 <RecordingDuration>-1</RecordingDuration>
 <RecordingStatus>1</RecordingStatus>
 <RecordingType>4</RecordingType>
 <Series id="-1162407203" hdd="48" mo="1" tu="1" we="1" th="1" fr="1" sa="1" su="1" />
 <PermanentFlag>0</PermanentFlag>
</Crid>
<//>

Manuellen Timer setzen

Einzelaufnahme
<Message>
<Command type="order" subject="define_timer_recording">
<Parameter key="description" value="Manueller timer"/>
<Parameter key="serviceId" value="10022"/>
<Parameter key="saveHdd" value="-1"/>
<Parameter key="startTime" value="1135191600"/>
<Parameter key="endTime" value="1135192500"/>
<Parameter key="seriesFlags" value="0"/>
</Command>
</Message>
<//>

Antwort der Box ist nicht "Normal"

<?xml version="1.0" encoding="ISO-8859-1"?>
<Message>
</Message>
<//>


Serienaufnahme
<Message>
<Command type="order" subject="define_timer_recording">
<Parameter key="description" value="test manuelle serie"/>
<Parameter key="serviceId" value="10002"/>
<Parameter key="saveHdd" value="7"/>
<Parameter key="startTime" value="1135195200"/>               -> 22.12.05 21:00
<Parameter key="endTime" value="1135198800"/>                 -> 22.12.05 22:00
<Parameter key="seriesFlags" value="85"/>                     -> Di, Do & Sa aufnehmen
</Command>
</Message>
<//>

Antwort der Box ist nicht "Normal"

<?xml version="1.0" encoding="ISO-8859-1"?>
<Message>
</Message>
<//>

EPG Timer setzen

Einzelaufnahme

Ablauf einer Timer Programmierung für eine Einzelaufnahme:

- Epg des Kanals Auslensen um die aktuellen Daten (cridId) zu kennen

- senden der zu speichernden Sendung

<Message>
<Command type="order" subject="define_epg_recording"/>
<Parameter key="cridId" value="113130462010022"/>
<Parameter key="seriesFlag" value="0"/>
</Message>
<//>

- Standard Antwort

- Danach wird nochmals das EPG ausgelesen

- und zum Schuß die Aktuelle Timerliste geladen

Serienaufnahme

Timer löschen

<Message>
<Command type="order" subject="delete_planned_recording">
<Parameter key="cridId" value="1131312060010001"/>
<Parameter key="seriesFlag" value="1"/>                 -> beimlöschen einer Serie 1 sonst 0
</Command>
</Message>
<//>

Antwort der Box:

Standard Antwort

Aufnahmen

Aufnahmen auslesen

<Message><Command type="request" subject="my_recordings"/></Message><//>
<?xml version="1.0" encoding="ISO-8859-1"?>
 <CridList>
  <Crid id="112570140010035">
  <Title>SPIEGEL TV</Title>                      <- Name
  <ServiceId>10035</ServiceId>                   <- Service Id aus Sender Liste
  <StartTime>1125701400</StartTime>              <- Startzeit als Unix Time Stamp
  <EndTime>1125718500</EndTime>                  <- Endzeit als Unix Time Stamp
  <RecordingDuration>13472</RecordingDuration>   <- Aufnahme dauer in Sekunden
  <RecordingStatus>3</RecordingStatus>           <- Status 3=Ok   2=    1=  
  <RecordingType>1</RecordingType>               <- Type 1=Normal 2=???Serie
  <PermanentFlag>0</PermanentFlag>               <- Löschen gesperrt=1 erlaubt=0
  </Crid>
  <Crid id="112836336010022">
  <Title>Spy Kids 2 - Die R.ckkehr der Superspione</Title>
  <ServiceId>10022</ServiceId>
  <StartTime>1128363360</StartTime>
  <EndTime>1128370200</EndTime>
  <RecordingDuration>8938</RecordingDuration>
  <RecordingStatus>3</RecordingStatus>
  <RecordingType>1</RecordingType>
  <PermanentFlag>1</PermanentFlag>
  </Crid>
  <Crid id="112940022010022">
  <Title>Mr. Nice Guy</Title>
  <ServiceId>10022</ServiceId>
  <StartTime>1129400220</StartTime>
  <EndTime>1129406400</EndTime>
  <RecordingDuration>7430</RecordingDuration>
  <RecordingStatus>3</RecordingStatus>
  <RecordingType>1</RecordingType>
  <PermanentFlag>0</PermanentFlag>
  </Crid>
  <Crid id="113043690010025">
  <Title>MythBusters - Die Wissensj.ger</Title>
  <ServiceId>10025</ServiceId>
  <StartTime>1130436900</StartTime>
  <EndTime>1130440500</EndTime>
  <RecordingDuration>5400</RecordingDuration>
  <RecordingStatus>3</RecordingStatus>
  <RecordingType>1</RecordingType>
  <PermanentFlag>0</PermanentFlag>
  </Crid>
  <Crid id="113054280010035">
  <Title>SPIEGEL TV</Title>
  <ServiceId>10035</ServiceId>
  <StartTime>1130542800</StartTime>
  <EndTime>1130557800</EndTime>
  <RecordingDuration>16139</RecordingDuration>
  <RecordingStatus>3</RecordingStatus>
  <RecordingType>1</RecordingType>
  <PermanentFlag>0</PermanentFlag>
  </Crid>
 </CridList>
<//>

Tip Of Day

Sinn noch unbekannt - möglicherweise für M750S Komfort-EPG "TV Digital - Tip des Tages"

<Message><Command type="request" subject="tip_of_day"><Parameter key="date" value="2005-10-29"/></Command></Message><//>

Antwort:

<?xml version="1.0" encoding="ISO-8859-1"?>
 <TipOfDay>
 </TipOfDay>
<//>

Fernbedienung

Sendet eine Fernbedienungstaste an die Box

 <Message><Command type="remote" subject="1"/></Message><//>  -> hier wird die Taste 1 gesendet

Antwort der Box: wie immer

Folgende "subject"s sind möglich

 CURSOR_RIGHT
 CURSOR_UP
 CURSOR_DOWN
 CURSOR_RIGHT
 OK
 0
 1
 2
 3
 4
 5
 6
 7
 8
 9
 CHANNEL_UP -> entspricht der PIP Taste der FB
 HELP
 EXIT
 DELETE -> entspricht der Mute Taste der FB
 MENU
 CHANNEL_DOWN -> entspricht der EPG Taste
 INFO
 REWIND
 FASTFORWARD
 STOP
 PLAY
 RED
 GREEN
 YELLOW
 BLUE

Offene Ports der Box

Orginal Firmware:

Port Benutzt von
21 FTP
10001 Unbekannt
49152 UPNP


Lemmi Firmware Version 2.0.36:


Port Benutzt von
21 FTP
23 Telnet
80 HTTP
8765 LIRCD (Fernbedienung)
10000 Ausgabe der LEMMI-Konfiguration
10001 Die Ausgabe des Programmes 'wavebox' (pipe) (optional)
10002 Die Ausgabe der Datei /etc/kmsg (optional)
10003 Die Ausgabe der Datei /data/RECORDER_LOG (optional)
10004 Die Ausgabe von 'watchdir -m /data/.timer' (optional)
10005 Die Debug.Ausgabe von 'key-control' (optional)
10101 Die Ausgabe des Tools 'osd2tcp' (optional)
49152 UPNP