Jump to content

MPEG2 Füllbytes entfernen


Basic.Master

Recommended Posts

Hallo,

 

ich wollte vorschlagen, dass der DVBViewer - ähnlich wie bei den H264-NALUs - bei MPEG2 die überflüssigen Bytes des sogenannten "zero byte stuffings" (siehe MPEG2-Spezifikation) entfernt. Diese Fülldaten finden sich z.B. zwischen dem Ende des letzten Slices (von einem Frame), und dem darauffolgenden "Picture Start"-Block.

Bei den meisten Sendern ist das nicht besonders ausgeprägt, aber z.B. beim rbb Fernsehen über Astra macht sich das bemerkbar, weil dort eine Mindestbitrate eingestell ist - wenn die reinen Daten dann drunter fallen, wird mit diesen Füllbytes "gestopft".

 

Man muss allerdings dazu sagen, dass die Fülldaten im Normalfall nicht so ein drastisches Ausmaß annehmen, wie z.B. bei ARD HD, ZDF HD und arte HD. Zum Beispiel bei einer 30min-Aufnahme können es nur 5 MB sein; das ganze schwankt und hängt vom Sender ab. Besonders bei Standbildern oder bei einem Abspann kann sich dann aber schon eine relevante Einsparung zeigen (wenn es z.B. darum geht, ob ein Film noch auf einen Single-Layer-Rohling passt oder nicht).

Ein extremes Beispiel ist die Ausstrahlung von dem Film "Control (2004)" (ruhige Bilder) im rbb am 02.01.2011 per DVB-S. Der Abspann (siehe Screenshots unten) ist 142MB groß - ohne Fülldaten nur 58MB. Beim gesamten Film sind es vorher 5.935 MB und nachher 5.285 MB.

 

Mittlerweile habe ich mehrere Aufnahmen vom rbb durch mein selbstgeschriebenes Programm (siehe Screenshot) gejagt; die Ersparnis lag dabei immer so um 100-150 MB. Es wäre halt praktisch, wenn die Fülldaten gleich bei der Aufnahme im DVBViewer verworfen würden... :)

 

Abspann (vor/nach Entfernung der Füllbytes):

originalkh.th.png cleaned.th.png shelloz.th.png

 

Ganzer Film (vor/nach Entfernung der Fülldaten):

originalfilm.th.png cleanedfilm.th.png

 

Siehe auch mein entsprechender Post im DF-Forum

Link to comment

Für den DVBViewer wäre es imo nur interessant, wenn es auf transport_stream-ebene was bringt. Hast du das untersucht? Wenn sich nur wenige ganze ts_packets entfernen lassen, sollte man sowas, falls gewünscht, einer nachbehandlung überlassen.

 

Übrigens gab es sowas schon vor vielen jahren ;) Funktionierte aber nicht gut und hatte nebenwirkungen. Wenn ich meine DVB2000/SCSI wieder in gang kriege, kann ich ja mal berichten. Ich hab's früher jedenfalls nicht verwendet.

Link to comment

Das funktioniert noch, obwohl aus einer zeit lange vor dem DVBViewer :D

 

Hier ein test mit bbc1. Bei einer 10minutigen testaufnahme war die ersparnis <1%. Lohnt wohl nicht :rolleyes:

 

ps.

auch bei RBB komme ich nur auf ca. 3,5% ersparnis. Aber wie gesagt, interessant wäre es nur für TS. Untersuchungen am ES sagen nicht viel..

Link to comment

Wenn es den DVBViewer nicht gäbe, dann würde ich heute noch damit aufnehmen (bzw. mit DboxWinserver für die dbox2) :biggrin:. Diese Option hatte ich damals auch angeschaltet (damals noch ohne dem Hintergrundwissen), aber zu Problemen hat das nicht geführt. Wenn man das Entfernen z.B. nur am Ende von Slices macht, kann es keine Probleme geben (solange man ein Nullbyte am Anfang des Zero Byte Stuffings übrig lässt), weil per Definition im letzten Byte eines Slice-Blocks mindestens eine 1 vorkommen muss.

 

Hab jetzt mal 10 Minuten vom rbb aufgenommen. Hier waren es ~3% Fülldaten, aber wenn man die 19MB pro 10 Minuten auf einen 90-Minuten-Film hochrechnet, kommen ~170MB raus.

Parallel habe ich auch mal mit dem DVBViewer aufgenommen und den demuxten Videostream durch mein Tool geschickt; da wurden auch ~19 MB entfernt. Aus der DVB2000-Aufnahme hat das Tool dann noch ~20KB entfernt.

 

Konkret mit einer TS-Aufnahme habe ich das ganze noch nicht getestet. Rein rechnerisch könnte man mal den Worst Case annehmen: pro Frame werden 2 TS-Pakete behalten, obwohl sie zu 99% Nullbytes enthalten (die Pakete dazwischen enthalten nur Nullbytes und werden komplett verworfen):

188 Byte * 2 * 25fps * 3600s = 33.840.000 Byte pro Stunde

Bei 114 MB Fülldaten pro Stunde würde man dann im schlimmsten Fall 34 MB nicht entfernen. Für die müsste man dann das Tool nochmal über den Video-ES laufen lassen.

post-97188-0-76966900-1333036754_thumb.png

post-97188-0-59938300-1333037545_thumb.png

Link to comment
  • 3 weeks later...

Habe jetzt nochmal ein paar Sender analysiert: Bei BR-alpha werden über DVB-S konstant ca. 0,6 Mbit/s dieser Fülldaten gesendet, also ca. 270 MB/h. Bei "Transformers 2" letztens auf Pro7 waren in der Aufnahme Fülldaten in Größenordnung 150 MB oder mehr drin.

 

Für den Fall dass jemand die Fülldaten aus seinen demuxten Aufnahmen entfernen will, ist hier der LInk auf eine kleine Seite von mir, wo es nochmal Erläuterungen gibt und man auch die Windows-Version sowie den Quellcode herunterladen kann:

http://home.arcor.de...bm/mpeg2cleaner

Link to comment

Join the conversation

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

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
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...