TSDuck, The MPEG Transport Stream Toolkit (GitHub) ist eine umfangreiche Werkzeug-Sammlung für den Umgang mit Transport Streams.

Mit Hilfe von “tsanalyze” können sowohl *.ts-Dateien als auch Live Streams analysiert werden. Auf diese Weise lassen sich diverse Fehler feststellen ohne die Ganze Zeit (angestrengt) Hinschauen zu müssen.

Eine Datei kann ganz einfach mit

tsanalyze <Dateiname>

analysiert werden.

Die Ausgabe fängt so an:

===============================================================================
|  TRANSPORT STREAM ANALYSIS REPORT                                           |
|=============================================================================|
|  Transport Stream Id: ....... 1019 (0x03FB)  |  Services: .............. 1  |
|  Bytes: .................... 12,895,367,628  |  PID's: Total: .......... 7  |
|  TS packets: ................... 68,592,381  |         Clear: .......... 7  |
|     With invalid sync: .................. 0  |         Scrambled: ...... 0  |
|     With transport error: ............... 0  |         With PCR's: ..... 1  |
|     Suspect and ignored: ................ 0  |         Unreferenced: ... 0  |
|-----------------------------------------------------------------------------|
|  Transport stream bitrate, based on ....... 188 bytes/pkt    204 bytes/pkt  |
|  User-specified: ................................... None             None  |
|  Estimated based on PCR's: ............... 11,883,354 b/s   12,894,703 b/s  |
|  Selected reference bitrate: ............. 11,883,354 b/s   12,894,703 b/s  |
|-----------------------------------------------------------------------------|
|  Broadcast time: ............................... 8681 sec (144 min 41 sec)  |
|-----------------------------------------------------------------------------|
|  Srv Id  Service Name                              Access          Bitrate  |
|  0x283D  (unknown) .................................... C   11,876,657 b/s  |
|                                                                             |
|  Note 1: C=Clear, S=Scrambled                                               |
|  Note 2: Unless specified otherwise, bitrates are based on 188 bytes/pkt    |
===============================================================================

Im weiteren Verlauf können Zeilen mit “error” oder “Discontinuities” interessant sein:

...
  PID: 0x0000 (0)                                                       PAT  |
|-----------------------------------------------------------------------------|
|  Global PID                Transport:                Discontinuities:       |
|  Bitrate: ..... 6,697 b/s  Packets: ........ 38,657  Expected: ......... 0  |
|  Access: .......... Clear  Adapt.F.: ............ 0  Unexpect: ......... 0  |
|                            Duplicated: .......... 0  Sections:              |
|                                                      Unit start: .. 38,657  |
|=============================================================================|
|  PID: 0x13EC (5100)                                                    PMT  |
|  Service: 0x283D (10301) (unknown)                                          |
|-----------------------------------------------------------------------------|
|  Single Service PID        Transport:                Discontinuities:       |
|  Bitrate: ..... 6,725 b/s  Packets: ........ 38,820  Expected: ......... 0  |
|  Access: .......... Clear  Adapt.F.: ............ 0  Unexpect: ......... 0  |
|                            Duplicated: .......... 0  Sections:              |
|                                                      Unit start: .. 38,820  |
|=============================================================================|
|  PID: 0x13ED (5101)                                              AVC video  |
|  PES stream id: 0xE0 (Video 0)                                              |
|  1280x720, high profile, level 4.0, 4:2:0                                   |
|  Service: 0x283D (10301) (unknown)                                          |
|-----------------------------------------------------------------------------|
|  Single Service PID        Transport:                Discontinuities:       |
|  Bitrate:  10,663,912 b/s  Packets: .... 61,553,594  Expected: ......... 0  |
|  Access: .......... Clear  Adapt.F.: ...... 695,173  Unexpect: ......... 0  |
|                            Duplicated: .......... 0  PES:                   |
|                            TSrate: . 11,883,354 b/s  Packets: .... 434,899  |
|                                                      Inv.Start: ........ 0  |
|  Clock values range:                                                        |
...

In diesem Beispiel scheint allerdings alles in Ordnung zu sein.

Beim Testen mit diversen DVBViewer-Aufnahmen zeigte sich, das offenbar nicht jede Datei geöffnet werden kann. “tsanalyze” meldet dann trotz richtigem Pfad und Namen das die Datei nicht gefunden werden konnte.

Wie man Live Streams analysieren kann findet man in den Quellen.

Quellen

SRT CookBook – TSDuck – How to replay a .ts file as a stream –  1. Use tsanalyze to find out a bitrate of the stream

FAB Support – Detect errors in TS/IP live streams