Jump to content
Pilou42

Use better splitter for RTSP sources

Recommended Posts

Pilou42

Hello,

 

DVBViewer has support for IPTV. For now, RTSP are handled by LAV splitter. Unfortunately, this splitter is not adapted to streaming, and nevcairiel has no plans on working on it (he said his splitter architecture does not suit streaming content).

RTSP streams + Lav filters = need several attemps before having a working connection to the stream.

 

Our providers in France recommends using VLC for this. In fact, VLC uses Live555 library which is better suited for streaming. https://wiki.videolan.org/Live555/

 

So here is my request: support Live555 splitter.

Share this post


Link to post
Tjod

If there is a Windows DirectSow Filter version of this spliter, you should be able to generate a GraphPresets (configuration folder\GraphPresets\FilterPreset.txt) to use it.

 

Bot there will be a bigger change in the steaming part in the next you can try ist in DVBViewer GE > TS Stream Device.

 

And there at least for RTSP/TS streams (from the RS as source) DVB Source is used as splitter.

Share this post


Link to post
Pilou42

Thanks for the answer. It has been hard for me to find time to do tests.

 

1) I did not manage to find a working directshow filter with Live555 library. There's a link to a project with a direct show filter, but I don't manage to make it work with Windows (it does not appear in directshow filterlist). If you have a working Windows DS filter with Live555 library, tell me.

 

2) I've tried DVBViewer GE, but RTSP streams still use LAV Filters, which results in lots of errors. I don't know if there's a way to force DVB source filter, but I suppose if DVB source filter doesn't use Live555 library, it won't work either.

 

So for now, my request is still valid I think (integrate Live555 library for RTSP/TS streaming).

Share this post


Link to post
Griga
I've tried DVBViewer GE, but RTSP streams still use LAV Filters

 

DVBViewer GE is able to handle RTSP without the LAV Splitter, but only if the server is Sat>IP compliant. The URL must conform to the Sat>IP URL syntax and the delivered content must be a transport stream (TS). The way to go is

  • TV/Radio -> Channel List -> right-click (shows context menu) -> Add Root -> TS Stream (creates a TS Stream root folder)
  • Within the new TS stream root select the Video folder.
  • Open the channel properties by clicking the tool button at the bottom left.
  • Enter the RTSP URL in the Address input line of the properties page. Optionally enter a channel name and category name. Click Add.
  • Double-click the new channel entry to start playback.

It could be extended to general (non Sat>IP) RTSP handling. With some experimental "proof of concept" code (far from being well elaborated) I already managed to receive an RTSP stream created by the VLC as server However, a transport stream as content would still be mandatory. Otherwise DVBViewer can't handle it natively.

Share this post


Link to post
Pilou42

Thanks for this info.

Unfortunately, if I put "TS stream", channel doesn't launch: when I double-click, I have nothing.

http://i.imgur.com/093a5Nx.png

I manage to have image if I put "stream" instead of "TS stream", but then LAV filters is used (with his flaws).

Share this post


Link to post
Griga

The URL doesn't conform to the Sat>IP syntax - see above. Do you know which media format is inside?

Share this post


Link to post
Pilou42

It's H.264 and AC3. LAV filters handles them without problem.

 

But just to be sure we talk about the same thing: datas don't come from a SAT>IP server. It's not satellite. It's IPTV. My Internet provider send datas to my router box, and my pc uses rtsp streams from my box. It's pretty common in France.

Share this post


Link to post
Griga
It's H.264 and AC3.

 

I did not refer to the video and audio format, but to the container format (if there is any).

 

RTSP is a network protocol. MPEG2 TS is a container format for video and audio (like MKV). As DVB application DVBViewer is able to handle video and audio packaged as transport stream. Other container formats are delegated to third party components like the LAV splitter.

 

As an extension to its DVB capabilities DVBViewer GE is able to handle streaming sources that deliver a transport stream or a pure MP2/MP3/ AAC audio stream (particularly internet radio, also quite close to DVB). Internally it is handled as if originating from DVB hardware. The same applies to the next DVBViewer Pro and DVBViewer Media Server (former Recording Service) release.

 

DVBViewer GE natively supports some network protocols like HTTP, UDP, RTP, RTSP (Sat>IP only up to now) if and only if they carry a DVB-like transport stream or MP2/MP3/AAC audio stream. If something different is inside, it's out of scope for DVBViewer and must be delegated.

 

So if I knew that there are many RTSP streams carrying a MPEG2 transport stream (without being Sat>IP) , I would try to handle it in DVBViewer. I didn't implement it up to now because I don't know what's usually inside RTSP streams that are not Sat>IP.

 

Any other content - sorry, no go here. I would try VLC as client.

Share this post


Link to post
Pilou42

Unfortunately I can't test until next week. I'll try to give more info about the container used. I though RTSP was used as a container specialized for streaming, that's why I though RTSP could be concerned by DVBViewer being "able to handle video and audio packaged as transport stream".

 

I suppose the hardest task would be that you don't have access to these streams, since they are generated from router box to PC. I had hopes I could avoid VLC and the poor quality, especially compared to GPU deinterlacing (+madVR).

 

Next time, I'll try to put screenshot of what LAV Filters detects when he is used as the decoding container. Thanks for your detailed answer.

Share this post


Link to post
Griga
since they are generated from router box to PC

 

What is the original source? Where does the router box get the content from?

Share this post


Link to post
Pilou42

It comes from my Internet provider servers (I suppose at the origine it was a DVB signal captured by a computer)

 

So DVB Signal captured by computers -> Copied on several servers -> Datas sent to subscriber router box if subscriber launches his TV box or uses an application "TV to PC" -> datas send from router box to PC by rtsp streams.

 

I hope it answers the question.

Share this post


Link to post
DanK

What about MPEG4 (H.264)?

Share this post


Link to post
Griga
So DVB Signal captured by computers -> Copied on several servers -> Datas sent to subscriber router box

 

If it comes from a DVB source chances are that the content is a TS.

Share this post


Link to post
Pilou42

I've tried to see what LAV Filters show. I think it's not useful, but I'll copy here:

 

[OUT] Video

Filter : LAV Splitter Source - CLSID : {B98D13E7-55DB-4385-A33D-09FD1BA26338}

 

- Connected to:

 

CLSID: {EE30215D-164F-4A92-A4EB-9D4C13390F9F}

Filter: LAV Video Decoder

Pin: Input

 

- Connection media type:

 

Video: MPEG4 Video (H264) 720x576 (20:11) 25fps

 

AM_MEDIA_TYPE:

majortype: MEDIATYPE_Video {73646976-0000-0010-8000-00AA00389B71}

subtype: MEDIASUBTYPE_H264 {34363248-0000-0010-8000-00AA00389B71}

formattype: FORMAT_MPEG2_VIDEO {E06D80E3-DB46-11CF-B4D1-00805F6CBBEA}

bFixedSizeSamples: 0

bTemporalCompression: 1

lSampleSize: 1

cbFormat: 176

 

VIDEOINFOHEADER:

rcSource: (0,0)-(720,576)

rcTarget: (0,0)-(720,576)

dwBitRate: 0

dwBitErrorRate: 0

AvgTimePerFrame: 400000

 

VIDEOINFOHEADER2:

dwInterlaceFlags: 0x00000000

dwCopyProtectFlags: 0x00000000

dwPictAspectRatioX: 20

dwPictAspectRatioY: 11

dwControlFlags: 0x00000000

dwReserved2: 0x00000000

 

MPEG2VIDEOINFO:

dwStartTimeCode: 0

cbSequenceHeader: 44

dwProfile: 0x0000004d

dwLevel: 0x0000001e

dwFlags: 0x00000000

 

BITMAPINFOHEADER:

biSize: 40

biWidth: 720

biHeight: 576

biPlanes: 1

biBitCount: 12

biCompression: H264

biSizeImage: 622080

biXPelsPerMeter: 0

biYPelsPerMeter: 0

biClrUsed: 0

biClrImportant: 0

 

pbFormat:

0000: 00 00 00 00 00 00 00 00 d0 02 00 00 40 02 00 00 ........Ð...@...

0010: 00 00 00 00 00 00 00 00 d0 02 00 00 40 02 00 00 ........Ð...@...

0020: 00 00 00 00 00 00 00 00 80 1a 06 00 00 00 00 00 ...............

0030: 00 00 00 00 00 00 00 00 14 00 00 00 0b 00 00 00 ................

0040: 00 00 00 00 00 00 00 00 28 00 00 00 d0 02 00 00 ........(...Ð...

0050: 40 02 00 00 01 00 0c 00 48 32 36 34 00 7e 09 00 @.......H264.~..

0060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................

0070: 00 00 00 00 2c 00 00 00 4d 00 00 00 1e 00 00 00 ....,...M.......

0080: 00 00 00 00|00 00 00 01 09 10 00 00 00 01 27 4d ..............'M

0090: 40 1e 9a 62 81 68 48 b0 44 20 a0 a0 a8 00 00 03 @.bhH°D ¨...

00a0: 00 08 00 00 03 01 94 a0 00 00 00 01 28 ee 3c 80 ...... ....(î<

 

- Enumerated media type 0:

 

Set as the current media type

[OUT] Audio

Filter : LAV Splitter Source - CLSID : {B98D13E7-55DB-4385-A33D-09FD1BA26338}

 

- Connected to:

 

CLSID: {E8E73B6B-4CB3-44A4-BE99-4F7BCB96E491}

Filter: LAV Audio Decoder

Pin: Input

 

- Connection media type:

 

Audio: MPEG Audio 48000Hz stereo 192kbps

 

AM_MEDIA_TYPE:

majortype: MEDIATYPE_Audio {73647561-0000-0010-8000-00AA00389B71}

subtype: MEDIASUBTYPE_MPEG2_AUDIO {E06D802B-DB46-11CF-B4D1-00805F6CBBEA}

formattype: FORMAT_WaveFormatEx {05589F81-C356-11CE-BF01-00AA0055595A}

bFixedSizeSamples: 1

bTemporalCompression: 0

lSampleSize: 256000

cbFormat: 18

 

WAVEFORMATEX:

wFormatTag: 0x0050

nChannels: 2

nSamplesPerSec: 48000

nAvgBytesPerSec: 24000

nBlockAlign: 4

wBitsPerSample: 16

cbSize: 0 (extra bytes)

 

pbFormat:

0000: 50 00 02 00 80 bb 00 00 c0 5d 00 00 04 00 10 00 P...»..À]......

0010: 00 00 ..

 

- Enumerated media type 0:

 

Set as the current media type

 

- Enumerated media type 1:

 

Audio

 

AM_MEDIA_TYPE:

majortype: MEDIATYPE_Audio {73647561-0000-0010-8000-00AA00389B71}

subtype: Unknown GUID Name {AFBC2343-3DCB-4047-9655-E1E62A61B1C5}

formattype: Unknown GUID Name {35189950-CAC9-4C8D-819D-B6FAEE15DD9D}

bFixedSizeSamples: 1

bTemporalCompression: 0

lSampleSize: 256000

cbFormat: 24

 

WAVEFORMATEXFFMPEG:

nCodecId: 0x15000

 

WAVEFORMATEX:

wFormatTag: 0x0050

nChannels: 2

nSamplesPerSec: 48000

nAvgBytesPerSec: 24000

nBlockAlign: 4

wBitsPerSample: 16

cbSize: 0 (extra bytes)

 

pbFormat:

0000: 00 50 01 00 50 00 02 00 80 bb 00 00 c0 5d 00 00 .P..P...»..À]..

0010: 04 00 10 00 00 00 00 00 ........

Link used: rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=302&flavour=sd

 

PS: mafreebox.freebox.fr is a local address.

 

For now the only real working solution is to use Live555 libraries (with VLC for example).

Share this post


Link to post
This thread is quite old. Please consider starting a new thread rather than reviving this one.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...