Jump to content

SAT>IP


Schimi
 Share

Recommended Posts

Guest Diefenthal

Hi

 

I use recording service with dvb-c.

 

What can i do?

perfect please wait  i send you an private message

if i had the dvbc support inbuild but you must have an ini file with the Tuning data

Link to comment
Share on other sites

Guest Diefenthal

as a client?  any computer with Windows

some (1 or 2%) Sat>Ip Server provide an link to an m3u file in the DeviceDescription,

 

the marked text. 

 

 

in this Picture is the Field filled but there is nothing behind the link  

Link to comment
Share on other sites

I have so.

<

<satip:X_SATIPCAP xmlns:satip="urn:ses-com:satip">DVBS2-1,DVBT-0,DVBT2-0,DVBC-0</satip:X_SATIPCAP>

<satip:X_SATIPM3U xmlns:satip="urn:ses-com:satip">/rtspchannels.m3u</satip:X_SATIPM3U>
Link to comment
Share on other sites

56eaf7cbaeb87_Untitled.pngLatest dev build going up displays the ini mappings. Note that this is only the form, it doesn't actually do anything yet. @ please verify it looks correct. thanks.

 

 

  • Like 1
Link to comment
Share on other sites

56eaf7cbaeb87_Untitled.pngLatest dev build going up displays the ini mappings. Note that this is only the form, it doesn't actually do anything yet. @ please verify it looks correct. thanks.

Awesome :) , wonderful progress, question, the Tp are preloaded or is it a case that the list will be pulled from user own receiver Tp? 

 

Thanks 

Edited by e123enitan
Link to comment
Share on other sites

Guest Diefenthal

this lists  Comes from http://satellites-xml.eu and contains only Transponders for the Satellite

this is required for an Service / channel Search

 

the m3u way is the way if the device has an own m3u list and provide them too

 

so have we for everyone  a solution  to Play with satip

 

@@Luke Looks  ok

 

add rtsp to communication with the device  

 

Setup ,Play ,Options ,Describe ,Teardown

 

is this inbuild can useres test the m3u way

and we had some work with the Search way

Link to comment
Share on other sites

Guest Diefenthal

if rtsp implemented and you have the ui for scan implemented too

 

can you receive rtp (unicast) so as Exsample  without Table Parsing

			serverendpoint= new IPEndpoint(IPAddress.Any,0);
			UdpClient udpClient = new UdpClient(ClientRTPPort);
			byte[] receivedBytes = udpClient.Receive(ref serverEndPoint);
    			if (receivedBytes.Length > 12)
                        {
                            byte[] tspackets = new byte[1316]; 				      //TS Payload
                            Array.Copy(receivedBytes, tspackets, receivedBytes.Length - 12);
                            Byte[] tsBytes = new byte[188];

                            for (int x = 0; x < tspackets.Length; x++)
                            {
                                #region Mpeg2
                                //PAT
                                if (tspackets[x] == 0x47 && tspackets.Length >= x + 188 &&     		//Sync byte and check of length
                                (tspackets[x + 1] & 15) == 0 && tspackets[x + 2] == 0x00 &&    		//Check if pid is 0x00
                                    tspackets[x + 5] == 0x00)                                  		//check if it is a PAT (Program Association Table) packet?
                                {                                   
                                    for (int y = 0; y < 188; y++)
                                    {
                                        tsBytes[y] = tspackets[x + y];
					//TODO Table Byte Parsing
                                    }

                                    x += 188;
                                }
                                //CAT
                                else if (tspackets[x] == 0x47 && tspackets.Length >= x + 188 &&      	//Sync byte and check of length
                                (tspackets[x + 1] & 15) == 0 && tspackets[x + 2] == 0x00 &&    		//Check if pid is 0x00
                                    tspackets[x + 5] == 0x01)                                       	//check if it is a CAT (Conditional Access Table) packet?
                                {                                   
                                    for (int y = 0; y < 188; y++)
                                    {
                                        tsBytes[y] = tspackets[x + y];
					//TODO Table Byte Parsing
                                    }

                                    x += 188;
                                }
                                //PMT
                                else if (tspackets[x] == 0x47 && tspackets.Length >= x + 188 &&      	//Sync byte and check of length
                                (tspackets[x + 1] & 15) == 0 && tspackets[x + 2] == 0x00 &&    		//Check if pid is 0x00
                                    tspackets[x + 5] == 0x02)                                       	//check if it is a PMT (Program Map Table) packet?
                                {                                    
                                    for (int y = 0; y < 188; y++)
                                    {
                                        tsBytes[y] = tspackets[x + y];
					//TODO Table Byte Parsing
                                    }

                                    x += 188;
                                }

                                #endregion
                                #region DVB
                                //NIT actual
                                else if (tspackets[x] == 0x47 && tspackets.Length >= x + 188 &&      	//Sync byte and check of length
                                (tspackets[x + 1] & 15) == 0 && tspackets[x + 2] == 0x10 &&    		//Check if pid is 0x10
                                    tspackets[x + 5] == 0x40)                                       	//check if it is a NIT (Network Information Table) packet?
                                {                                    
                                    for (int y = 0; y < 188; y++)
                                    {
                                        tsBytes[y] = tspackets[x + y];
					//TODO Table Byte Parsing
                                    }

                                    x += 188;
                                }
                                //NIT other
                                else if (tspackets[x] == 0x47 && tspackets.Length >= x + 188 &&      	//Sync byte and check of length
                                (tspackets[x + 1] & 15) == 0 && tspackets[x + 2] == 0x10 &&    		//Check if pid is 0x10
                                    tspackets[x + 5] == 0x41)                                       	//check if it is a NIT (Network Information Table) packet?
                                {
                                    for (int y = 0; y < 188; y++)
                                    {
                                        tsBytes[y] = tspackets[x + y];
					//TODO Table Byte Parsing
                                    }

                                    x += 188;
                                }
                                //SDT actual
                                else if (tspackets[x] == 0x47 && tspackets.Length >= x + 188 &&      	//Sync byte and check of length
                                (tspackets[x + 1] & 15) == 0 && tspackets[x + 2] == 0x11 &&    		//Check if pid is 0x11
                                    tspackets[x + 5] == 0x42)                                       	//check if it is a SDT (Service Description Table) packet?
                                {
                                    for (int y = 0; y < 188; y++)
                                    {
                                        tsBytes[y] = tspackets[x + y];
					//TODO Table Byte Parsing
                                    }

                                    x += 188;
                                }
                                //SDT other
                                else if (tspackets[x] == 0x47 && tspackets.Length >= x + 188 &&      	//Sync byte and check of length
                                (tspackets[x + 1] & 15) == 0 && tspackets[x + 2] == 0x11 &&    		//Check if pid is 0x11
                                    tspackets[x + 5] == 0x46)                                       	//check if it is a SDT (Service Description Table) packet?
                                {
                                    for (int y = 0; y < 188; y++)
                                    {
                                        tsBytes[y] = tspackets[x + y];
					//TODO Table Byte Parsing
                                    }

                                    x += 188;
                                }
                                //BAT
                                else if (tspackets[x] == 0x47 && tspackets.Length >= x + 188 &&      	//Sync byte and check of length
                                (tspackets[x + 1] & 15) == 0 && tspackets[x + 2] == 0x11 &&    		//Check if pid is 0x11
                                    tspackets[x + 5] == 0x4A)                                       	//check if it is a BAT (Bouquet Association Table ) packet?
                                {
                                    for (int y = 0; y < 188; y++)
                                    {
                                        tsBytes[y] = tspackets[x + y];
					//TODO Table Bytes Parsing  
                                    }

                                    x += 188;
                                }
                                //EIT Present/Following Actual
                                else if (tspackets[x] == 0x47 && tspackets.Length >= x + 188 &&      	//Sync byte and check of length
                                (tspackets[x + 1] & 15) == 0 && tspackets[x + 2] == 0x12 &&    		//Check if pid is 0x12
                                    tspackets[x + 5] == 0x4E)                                       	//check if it is a EIT (Event Information Table) packet?
                                {                                    
                                    for (int y = 0; y < 188; y++)
                                    {
                                        tsBytes[y] = tspackets[x + y];
					//TODO Table Bytes Parsing 
                                    }

                                    x += 188;
                                }
                                //Eit Present/Following Other
                                else if (tspackets[x] == 0x47 && tspackets.Length >= x + 188 &&     	//Sync byte and check of length
                                (tspackets[x + 1] & 15) == 0 && tspackets[x + 2] == 0x12 &&         	//Check if pid is 0x11
                                    tspackets[x + 5] == 0x4F)                                       	//check if it is a EIT (Event Information Table) packet?
                                {                                    
                                    for (int y = 0; y < 188; y++)
                                    {
                                        tsBytes[y] = tspackets[x + y];
					//TODO Table Bytes Parsing
                                    }

                                    x += 188;
                                }
                                //EIT Schedule Actual
                                else if (tspackets[x] == 0x47 && tspackets.Length >= x + 188 &&     	//Sync byte and check of length
                                (tspackets[x + 1] & 15) == 0 && tspackets[x + 2] == 0x12 &&         	//Check if pid is 0x12
                                    tspackets[x + 5] >= 0x50 && tspackets[x + 5] <= 0x5F)           	//check if it is a EIT (Event Information Table) packet?
                                {
                                    for (int y = 0; y < 188; y++)
                                    {
                                        tsBytes[y] = tspackets[x + y];
					//TODO Table Bytes Parsing
                                    }

                                    x += 188;
                                }
                                //EIT Schedule Other
                                else if (tspackets[x] == 0x47 && tspackets.Length >= x + 188 &&     	//Sync byte and check of length
                                (tspackets[x + 1] & 15) == 0 && tspackets[x + 2] == 0x12 &&         	//Check if pid is 0x12
                                    tspackets[x + 5] >= 0x60 && tspackets[x + 5] <= 0x6F)           	//check if it is a EIT (Event Information Table) packet?
                                {
                                    for (int y = 0; y < 188; y++)
                                    {
                                        tsBytes[y] = tspackets[x + y];
					//TODO Table Bytes Parsing

                                    }

                                    x += 188;
                                }
                                //TDT
                                else if (tspackets[x] == 0x47 && tspackets.Length >= x + 188 &&     	//Sync byte and check of length
                                (tspackets[x + 1] & 15) == 0 && tspackets[x + 2] == 0x14 &&         	//Check if pid is 0x14
                                    tspackets[x + 5] == 0x70)                                       	//check if it is a TDT (Time and Date Table) packet?
                                { 
                                   for (int y = 0; y < 188; y++)
                                    {
                                        tsBytes[y] = tspackets[x + y];
					//TODO Table Bytes Parsing 
                                    }

                                    x += 188;
                                }
                                #endregion
                            }
                        }     
Edited by Diefenthal
  • Like 2
Link to comment
Share on other sites

Let me share DVBviwer Recording service M3U format for SATIP:

 

#EXTINF:-1,Channel Group Name - Channel Name

#EXTVLCOPT:program=1713

rtsp://192.168.1.10:554/?src=1&freq=12245&msys=dvbs2&plts=off&fec=56&pol=h&ro=0.35&sr=27500&mtype=8psk&tnr=1,12245,27500,10600,1,0,3,4,213,113,1713,1713,6,0,25,0,7,66,-1&pids=0,16,17,18,20,1713,113,213

 

 

Examples:

Channel Group Name : My Movie Channels (Generated within DVBviewer channel editor as folders)

Channel Name: BBC HD

 

Both channel names and channel groups can include special chars like space, dash etc.

Edited by denethor
Link to comment
Share on other sites

Let me share DVBviwer Recording service M3U format for SATIP:

 

#EXTINF:-1,Channel Group Name - Channel Name

#EXTVLCOPT:program=1713

rtsp://192.168.1.10:554/?src=1&freq=12245&msys=dvbs2&plts=off&fec=56&pol=h&ro=0.35&sr=27500&mtype=8psk&tnr=1,12245,27500,10600,1,0,3,4,213,113,1713,1713,6,0,25,0,7,66,-1&pids=0,16,17,18,20,1713,113,213

 

 

Examples:

Channel Group Name : My Movie Channels (Generated within DVBviewer channel editor as folders)

Channel Name: BBC HD

 

Both channel names and channel groups can include special chars like space, dash etc.

can you test this on the latest dev or beta to see how they're showing up? thanks.

Link to comment
Share on other sites

can you test this on the latest dev or beta to see how they're showing up? thanks.

Thats exactly what I'm doing right now :) but my previous post was not complete, sorry. Here is the actual example and how it looks in channel list of WEB Client. Looks like there is a problem with parsing.

#EXTINF:-1,D-Smart - FOXCRIME HD
#EXTVLCOPT:program=1707rtsp://192.168.1.10:554/?src=1&freq=12245&msys=dvbs2&plts=off&fec=56&pol=h&ro=0.35&sr=27500&mtype=8psk&tnr=1,12245,27500,10600,1,0,3,4,207,107,1707,1707,6,0,25,0,7,66,-1&pids=0,16,17,18,20,1707,107,207,307
56ec4a6bb0920_ScreenShot20160318at203045

 

One last edit :)

Server version :3.0.5921.20537

Edited by denethor
Link to comment
Share on other sites

Guest Diefenthal

hmm

 

&tnr=1,12245,27500,10600,1,0,3,4,207,107,1707,1707,6,0,25,0,7,66,-1 isnt a specified in the satip spec

Link to comment
Share on other sites

hmm

 

&tnr=1,12245,27500,10600,1,0,3,4,207,107,1707,1707,6,0,25,0,7,66,-1 isnt a specified in the satip spec

Only trail I can find is in their 1.28 release notes and listed as UPNP missing param. fix. (1.32 is the current version)

 

"Fix: UPnP: Missing tnr-parameters in RTSP playlists and the GetChannelsXML API prevented playback of encrypted and DVB-C channels."

Edited by denethor
Link to comment
Share on other sites

are you able to play?

Nope. But I only tried it with iPAD Safari. I wasn't aware about it could have play streams. I was thinking that you are at the stage of developing UI.

Link to comment
Share on other sites

ok so when parsing the m3u we have to skip the line that starts with #EXTVLCOPT:program

No play.

#EXTM3U
#EXTINF:-1,Orion Express - Первый Канал
rtsp://localhost:554/?src=1&freq=12640&msys=dvbs&plts=off&fec=56&pol=v&ro=0.35&sr=30000&mtype=qpsk&tnr=1,12640,30000,10600,1,1,0,4,2101,1101,101,101,1,0,25,0,7,1,-1&pids=0,16,17,18,20,101,1101,151,2101
#EXTINF:-1,Orion Express - Первый Канал HD
rtsp://localhost:554/?src=1&freq=11960&msys=dvbs2&plts=off&fec=35&pol=h&ro=0.35&sr=28800&mtype=8psk&tnr=1,11960,28800,10600,1,0,0,7,2902,1902,902,92,6,0,25,0,15,1,-1&pids=0,16,17,18,20,902,1902,33,2902,3902
#EXTINF:-1,Orion Express - Первый канал (+2)
rtsp://localhost:554/?src=1&freq=11872&msys=dvbs&plts=off&fec=12&pol=h&ro=0.35&sr=15000&mtype=qpsk&tnr=1,11872,15000,10600,1,0,0,1,4603,3603,1603,1603,0,0,25,0,22,1,-1&pids=0,16,17,18,20,1603,3603,4603
#EXTINF:-1,Orion Express - Первый Канал HD (+4)
rtsp://localhost:554/?src=1&freq=11960&msys=dvbs2&plts=off&fec=35&pol=h&ro=0.35&sr=28800&mtype=8psk&tnr=1,11960,28800,10600,1,0,0,7,2904,1904,904,904,6,0,25,0,15,1,-1&pids=0,16,17,18,20,904,1904,2904,2954
#EXTINF:-1,Orion Express - Первый Канал (+4)
rtsp://localhost:554/?src=1&freq=12080&msys=dvbs2&plts=off&fec=23&pol=h&ro=0.35&sr=28800&mtype=8psk&tnr=1,12080,28800,10600,1,0,0,2,2414,1414,414,414,6,0,25,0,10,1,-1&pids=0,16,17,18,20,414,1414,2414
#EXTINF:-1,Orion Express - Россия HD
rtsp://localhost:554/?src=1&freq=11960&msys=dvbs2&plts=off&fec=35&pol=h&ro=0.35&sr=28800&mtype=8psk&tnr=1,11960,28800,10600,1,0,0,7,2901,1901,901,901,6,0,25,0,15,1,-1&pids=0,16,17,18,20,901,1901,2901

logs.zip

Link to comment
Share on other sites

Guest Diefenthal

@@Nikolaech

 

if you had Windows MediaPlayer and the LAV Directshow Filter Installed

than load this package

https://github.com/Diefenthal/SatIp-Rtsp-Sample/Releases

 

customize  your rtspchanneles.m3u  so

 

from

 

 

#EXTM3U #EXTINF:-1,Orion Express - Первый Канал 
rtsp://localhost:554/?src=1&freq=12640&msys=dvbs&plts=off&fec=56&pol=v&ro=0.35&sr=30000&mtype=qpsk&tnr=1,12640,30000,10600,1,1,0,4,2101,1101,101,101,1,0,25,0,7,1,-1&pids=0,16,17,18,20,101,1101,151,2101 

 

 

to

 

 

 

#EXTM3U #EXTINF:-1,Orion Express - Первый Канал 

src=1&freq=12640&msys=dvbs&plts=off&fec=56&pol=v&ro=0.35&sr=30000&mtype=qpsk&pids=0,16,17,18,20,101,1101,151,2101 

save the customized as PlayList.m3u and put it into the SatIp Rtsp Sample Folder and start it

let us know if it works or not

if not ,find you an sample.log there C:\ProgramData\SatIp RtspSample\Logs

Link to comment
Share on other sites

ОК

@Diefenthal

Scrambled channels Первый канал-not showsFree channel Kino TV HD-works. :)

 

A working example of the playlist  rtsp.m3u

#EXTM3U
#EXTINF:-1,Orion Express - Kino TV HD
rtsp://localhost:554/?src=1&freq=11800&msys=dvbs2&plts=off&fec=23&pol=h&ro=0.35&sr=28800&mtype=8psk&tnr=1,11800,28800,10600,1,0,0,2,4408,3408,1408,1408,6,0,24,0,20,1,-1&pids=0,16,17,18,20,1408,3408,4408
#EXTINF:-1,Orion Express - Первый Канал
rtsp://localhost:554/?src=1&freq=12640&msys=dvbs&plts=off&fec=56&pol=v&ro=0.35&sr=30000&mtype=qpsk&tnr=1,12640,30000,10600,1,1,0,4,2101,1101,101,101,1,0,25,0,7,1,-1&pids=0,16,17,18,20,101,1101,151,2101

 9066977.png

 

9048544.png

Will continue to test

Edited by Nikolaech
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...