Difference between revisions of "TS Info"

From VideoLAN Wiki
Jump to navigation Jump to search
(→‎Features: Add wikilinks, including GOP)
 
(8 intermediate revisions by 3 users not shown)
Line 1: Line 1:
=== Introduction ===
+
In the Open Source multimedia field there are various choices for multimedia streaming and playback. However analysing and checking validity of [[MPEG-TS]] streams is not really possible. DVBsnoop (http://dvbsnoop.sourceforge.net/) is the only application that is only one that comes near this goal, but it is a commandline utility. This doesn't make it easy to be used.
  
After some discussion on IRC regarding availability of a Linux utility to display MPEG-TS info from UDP / RTP streams, I have decided to have a go at writing something to do just this.
+
The goal of TS Info is to be an easy to use MPEG-TS (MPTS/SPTS) analyser with all the information, analysis and validation right under you finger tips.  
  
I will hopefully be using libdvbpsi for a lot of the parsing duties. I am aware of tools like dvbsnoop, but they don't quite meet the requirements.  I'm looking for something similar to TSReader Lite, without the licensing issues and win32 dependency.
+
It should also be possible to insert the TS Analyser/TS Monitor in between the client and the server and monitor the stream for the boundaries configured. If the boundaries (or rules) are crossed, then a trigger will be sent to indicate a deviation from the required settings.
  
So the question is what features would people like to see?  So far I have:
+
== Features ==
  
* Ability to read MPEG-TS wrapped in both raw UDP, and RTP/UDP
+
* Input from TS/RTP/UDP or TS/UDP
* Ability to use linux-dvb devices
+
* Possible extension to use linux-dvb device (maybe use [[dvblast]] as input)
* Display of a tree hierarchy with PAT / PMT / SID / PID information
+
* PID list and bandwidths / %age - bargraph
* Display NIT table if it exists
+
* [[Bitrate]]s (also audio and video separate)
* Calculation of bandwidth of each PID, as well as percentage bandwidth used by each PID
+
* Mux distance of audio and video packets
 +
* SI table parsing (NIT, PMT, PAT, EIT, CAT, etc.) / descriptor parsing
 +
* Detect scrambled content (check scrambling bits 11, 10, optional 01/00)
 +
* [[I-frame]] gap
 +
* Determine [[GOP]] length
 +
* Detect Open/Closed GOP
 +
* Teletext/closed captioning detection
 +
* CRC errors
 +
* I-frame decoding
 +
* Discontinuity indication
 +
* Subtitle decoding
 +
* EPG grid
 +
* PID selection and forwarding to VLC (via UDP stream?)
 +
* Triggers on deviation from set boundaries (mux distance < 500ms, if not then sent trigger eg: sms/e-mail)
 +
* Mention conformance to which standard and link to it if online source is available
  
Any wishes or ideas would be welcome at this stage.
+
== Architecture ==
  
Gatty.
+
proposal:
 +
* TS Analyser GUI - user interface to browse the MPEG-TS stream content (information gathered is similar to DVBsnoop)
 +
* TS Analyser    - real-time MPEG-TS analyser that informs the GUI/TS Monitor of features discovered and various measurements
 +
* TS Monitor      - real-time MPEG-TS monitor that triggers on deviations of preferred features in the MPEG-TS stream
 +
<pre>
 +
                                    TS Analyser GUI
 +
                                          |
 +
 
 +
MPEG-TS --------> RTP/UDP input ---> TS Analyser --> RTP/UDP output
 +
(MPTS/SPTS)                                |
 +
                                    TS Monitor --> send trigger if deviation detected
 +
</pre>
 +
== License ==
 +
 
 +
* TS Analyser GUI : GPLv2
 +
* TS Analyser library : LGPLv2.1
 +
* TS Monitor daemon : GPLv2
 +
 
 +
[[Category:Dev Discussions]]

Latest revision as of 05:02, 16 May 2019

In the Open Source multimedia field there are various choices for multimedia streaming and playback. However analysing and checking validity of MPEG-TS streams is not really possible. DVBsnoop (http://dvbsnoop.sourceforge.net/) is the only application that is only one that comes near this goal, but it is a commandline utility. This doesn't make it easy to be used.

The goal of TS Info is to be an easy to use MPEG-TS (MPTS/SPTS) analyser with all the information, analysis and validation right under you finger tips.

It should also be possible to insert the TS Analyser/TS Monitor in between the client and the server and monitor the stream for the boundaries configured. If the boundaries (or rules) are crossed, then a trigger will be sent to indicate a deviation from the required settings.

Features

  • Input from TS/RTP/UDP or TS/UDP
  • Possible extension to use linux-dvb device (maybe use dvblast as input)
  • PID list and bandwidths / %age - bargraph
  • Bitrates (also audio and video separate)
  • Mux distance of audio and video packets
  • SI table parsing (NIT, PMT, PAT, EIT, CAT, etc.) / descriptor parsing
  • Detect scrambled content (check scrambling bits 11, 10, optional 01/00)
  • I-frame gap
  • Determine GOP length
  • Detect Open/Closed GOP
  • Teletext/closed captioning detection
  • CRC errors
  • I-frame decoding
  • Discontinuity indication
  • Subtitle decoding
  • EPG grid
  • PID selection and forwarding to VLC (via UDP stream?)
  • Triggers on deviation from set boundaries (mux distance < 500ms, if not then sent trigger eg: sms/e-mail)
  • Mention conformance to which standard and link to it if online source is available

Architecture

proposal:

  • TS Analyser GUI - user interface to browse the MPEG-TS stream content (information gathered is similar to DVBsnoop)
  • TS Analyser - real-time MPEG-TS analyser that informs the GUI/TS Monitor of features discovered and various measurements
  • TS Monitor - real-time MPEG-TS monitor that triggers on deviations of preferred features in the MPEG-TS stream
                                     TS Analyser GUI
                                           |

MPEG-TS --------> RTP/UDP input ---> TS Analyser --> RTP/UDP output
(MPTS/SPTS)                                |
                                     TS Monitor --> send trigger if deviation detected

License

  • TS Analyser GUI : GPLv2
  • TS Analyser library : LGPLv2.1
  • TS Monitor daemon : GPLv2