Jump to content

AC3 - 1. Header - Wechsel von 2.0 zu 5.1


Ph. Heckelt

Recommended Posts

Hallo liebe Forengemeinde!

 

Ich habe ein kleines aber doch für mich scheinbar unlösbares Problem. Die Forensuche konnte mir leider nicht weiterhelfen, aber ihr könnt das ja vielleicht.

 

Ich zeichne .ts-Dateien mit meinem DVBViewer auf und speichere alle Audiostreams sowie den Videostream dabei im TS ab. Nun nehme ich seit geraumer Zeit auch HD-Sender in H.264 auf. Soweit - Sogut. Nun möchte ich diese Aufnahmen, insbesondere die HD-Aufnahmen weiterbearbeiten und archivieren. In der Vergangenheit habe ich unzählige Versuche unternommen, HD-TS weiterzubearbeiten, egal ob ich sie demuxxt habe oder mit AviSynth und VirtualDub direkt bearbeitet habe. Das Ergebnis war prinzipiell immer das selbe: UNSYNCHRON - UNBRAUCHBAR. Der Grund dafür liegt nicht zuletzt in Übertragungsfehlern, die natürlich nicht behoben werden und daher im AviSynth z.B. Frames überspringen und so die Asynchonität hervorrufen.

 

Mittlerweile habe ich eine für mich OPTIMALE Lösung gefunden: XMediaRecode. Dank diesem Programm, kann ich nun die .ts-Datei direkt in ein anderes Format (bei mir ist das h.264/AC3-MKV) konvertieren. Der Vorteil gegenüber AviDemux z.B. ist, dass XMediaRecode 2 Audiospuren unterstützt. Und was für mich am allerallerwichtigsten ist: Das Ergebnis ist IMMER synchron.

 

Aber nun endlich zum eigentlichen Problem:

XMediaRecode ließt wie viele andere Programme auch, nur den 1. Header einer Datei aus um die Audio/Video-Daten zu ermitteln. Viele meiner Aufnahmen wurden auf Sendern gemacht die zwar den Ton in 5.1 beim Film aber nur 2.0 bei der Werbung senden. Somit ließt XMediaRecode eine eigentlich 5.1-Audiospur nur als 2.0 aus und erlaubt mir somit auch nur 2.0 als Ausgangsmaterial.

 

Wie kann ich den 1. Frame des AC3-Streams auf 5.1 patchen? Evtl. auch über einen Hex-Editor? Vorzugsweise möchte ich die Datei nicht demuxxen, da ich befürchte dann wieder ein unsynchrones Endergebnis zu bekommen.

 

Eins noch vorab: Ich kenne Programme wie Cuttermaran, ProjectX, MPEGSchnitt, etc. aber wie gesagt es geht um ein H.264-TS, daher helfen diese Programme leider nicht.

 

Sorry dass ich so viel Text wegen so einer kleinen Frage hinterlasse, aber ich möchte, dass ihr gleich den Hintergrund kennt.

Und nun hoffe ich, dass ihr mir helfen könnt. ;)

Link to comment

Danke Griga für die superschnelle Antwort!

 

Es stimmt, das wäre eine Möglichkeit den Stream zu schneiden, doch leider ist es bei vielen, teils sehr bekannten Sendern so, dass erst einige Sekunden nachdem der Film beginnt, der Header im Frame als 5.1 gesetzt wird. Würde ich an dieser Stelle schneiden, würden mir die ersten Sekunden des Films fehlen.

 

Übrigens: Schneiden tu ich im Anschluss an das Konvertieren Framegenau per Cut Assistant und VirtualDub (Ja ihr habt richtig gelesen: Framegenau, das geht wirklich ;) )

Link to comment
doch leider ist es bei vielen, teils sehr bekannten Sendern so, dass erst einige Sekunden nachdem der Film beginnt, der Header im Frame als 5.1 gesetzt wird.

Das Patchen von AC3 Headern ist natürlich möglich, und ich weiß im Prinzip auch wie das geht, aaaaaber:

 

- Erst müsste der Beginn des AC3 Streams in der TS-Datei gefunden werden. Irgendwo in den ersten paar MB zwischen Unmengen von Videodaten. Und das mit einem Hex-Editor? Viel Spaß. Auch ein Patch-Tool stände vor dem Problem, d.h. es müsste aufwändig analysieren und herumsuchen. Programmtechnisch wird es allerdings wesentlich einfacher, wenn die PID des zu patchenden Streams dem Programm bekannt ist.

 

- Wenn der Beginn des Films AC3 2.0 ist, aber dein Programm nimmt aufgrund des ersten Headers 5.1 an, was passiert dann bei der Wiedergabe?

Link to comment

Wenn der erste Header 5.1 ist aber der eigentliche Film 2.0, dann kann ich ja im XMediaRecode sagen ich recodiere das AC3 zu einem 2.0-Stream, wenn ichs zu einem 5.1 codiere, hab ich einen Stream mit 5.1 Kanälen wo 3.1 Kanäle stumm sind. (Was mich persönlich nicht stören würde, und hören tut mans dann ja auch nicht)

 

Ich hatte auch schon die Idee, ein TS mit 5.1 davor dranzuhängen damit ich dann richtig kodieren kann aber dazu müsste ich ja immer das passende TS mit den gleichen Streams zur Hand haben...

 

[edit]

Vielleicht noch kurz als Hinweis: ProjectX kann ja den 1. Frame zu 3/2 patchen. Ich habe mal versucht ein H.264-TS direkt über ProjectX wieder als TS auszugeben allerdings bekam ich am Ende die Meldung: "Es wurden 0 Byte geschrieben". Scheinbar kann man den TS nicht direkt wieder als TS ausgeben...

[/edit]

Edited by Ph. Heckelt
Link to comment
Ich hatte auch schon die Idee, ein TS mit 5.1 davor dranzuhängen damit ich dann richtig kodieren kann aber dazu müsste ich ja immer das passende TS mit den gleichen Streams zur Hand haben...

Das geht mit dem TSPlayer. Ein kleines Stück aus der Mitte ausschneiden, sagen wir 10 MB, und mit der ursprünglichen Datei verbinden. Allerdings hast du dann an der Nahtstelle in jeder Beziehung heftige Diskontinuitäten und Fehler, insbesondere auch bei den Zeitstempeln. Wenn XMediaRecode damit noch zurechtkommt, ist das Programm wirklich saugut.

 

ProjectX kann ja den 1. Frame zu 3/2 patchen.

Ja, beim Demuxen (steht über den Checkboxen), d.h. im extrahierten Elementary Stream, aber nicht im TS.

 

Also wenn ich das richtig verstanden habe, encodiert XMediaRecode den Audiostream neu, d.h. übernimmt nicht den originalen Stream? Warum dieser unnötige Qualitätsverlust? Und erlaubt dir nicht, einzustellen, wie der Output aussehen soll, sondern orientiert sich dabei nur am ersten Header des Inputs?

 

Ich habe ehrlich gesagt keine Ahnung, was passiert, wenn man einem Programm oder einem Decoder AC3 Frames serviert, deren Header was anderes angibt, als tatsächlich drin ist. Erscheint mir ziemlich schräg.

 

Beim Authoren von Video-DVDs muss man in manchen Fällen die Auflösung in MPEG2-Headern auf eine DVD-konforme Auflösung patchen, damit das Authoring-Programm nicht streikt. Aber das ist nur ein Pro Forma-Betrug, weil das Programm den Stream ohnehin nicht dekodiert, und nach der Verarbeitung müssen die Header wieder auf die usprüngliche Auflösung zurückgepatcht werden, damit es bei der Wiedergabe kein Unglück gibt. Deshalb kann ich mir nicht vorstellen, wie dein Plan funktionieren soll.

Link to comment

Ok, daran, dass ich einfach ein Stück aus der Mitte rausschneide und am anfang einfach einfüge, hab ich gar nicht gedacht. Das könnte funktionieren.

 

Nochmal zum Programm: Meistens ist es ja so, dass ein frisch aufgenommener TS auch nicht mit einem IDR-Frame beginnt. Folglich habe ich beim abspielen der TS-Datei auch am Anfang Makroflecken, bis der erste IDR-Frame kommt. Wenn ich nun so eine TS-Datei mit XMediaRecode umwandle (Das tue ich übrigens extra, um Übertragungsfehler in Video- und Audiostream zu "reparieren" bzw. zu übergehen) habe ich am Anfang des Videos "kodierte Makroflecken". Also ich sehe praktisch ein IDR-Frame aber es sieht so aus als ob ich die Original-Datei abspiele die ja z.B. mit einem B-Frame beginnt. Das stört mich natürlich nicht weil ich ja am Anfang locker 10 Minuten habe, die ich später eh wegschneide. Das Ergebnis ist dann eine saubere H.264 kodierte Datei mit 2x AC3-Sound, die darrüber hinaus auch noch kleiner als die Originaldatei ist, je nach eingestellter Bitrate und natürlich ohne Übertragungsfehler.

 

Die Sache mit dem rausschneiden und vorne dran setzen werde ich heute direkt noch ausprobieren und danach gleich schreiben obs geklappt hat.

Wie gesagt: An sich ist mein Vorgehen was das Ergebnis betrifft, eine extrem einfache Variante HD zu bearbeiten. Und wenn das mit den vorn dranhängen klappt, ist mein Tag gerettet. ;)

 

Oh und noch was: XMediaRecode kann natürlich auch den Stream direkt kopieren aber solange es kein Programm wie ProjectX für H.264 gibt kodiere ich es lieber einmal neu, um unerwünschte Überraschungen zu umgehen.

 

Ich bekomm übrigens auch nix dafür dass ich hier so von dem Programm schwärme, ich finds einfach nur absolut genial, wie einfach man damit ts-dateien kodieren kann. :oops:

Link to comment
XMediaRecode kann natürlich auch den Stream direkt kopieren aber solange es kein Programm wie ProjectX für H.264 gibt kodiere ich es lieber einmal neu, um unerwünschte Überraschungen zu umgehen.

Das direkte Kopieren des AC3 Streams würde ich als erstes probieren. Was soll es da für unangenehme Überraschungen geben? Die würde ich viel eher erwarten, wenn du ein Stück aus der Mitte an den Anfang setzt.

Link to comment

..ich würde es mal mit pj.x probieren. Das tool kann zwar nichts mit h.264 anfangen, aber der ac3-stream kann über demuxen extrahiert werden. Mit der option "patch 1st ac3-header to 3/2 ch-mode" könnte es klappen. Natürlich muss der ac3-track dann später mit dem bearbeiteten video stream gemuxt werden.

Link to comment
Das direkte Kopieren des AC3 Streams würde ich als erstes probieren. Was soll es da für unangenehme Überraschungen geben?

 

Das habe ich natürlich auch schon probiert. Aber danach konnte kein Player ob VLC oder MPC oder WMP den Audiostream abspielen, es kam zu Abstürzen und unerklärlichen Fehlermeldungen bei manchen Dateien. Vermutlich weil der Audiostream nicht mit dem richtigen Frame beginnt... (Gibts überhaupt I-Frames bei AC3-Streams?)

 

..ich würde es mal mit pj.x probieren. Das tool kann zwar nichts mit h.264 anfangen, aber der ac3-stream kann über demuxen extrahiert werden. Mit der option "patch 1st ac3-header to 3/2 ch-mode" könnte es klappen. Natürlich muss der ac3-track dann später mit dem bearbeiteten video stream gemuxt werden.

 

Ich denke das genau das nicht funktioniert, weil wenn ich für Audio und Video-Stream jeweils einzelne Programme verwende, bekomme ich kaum wieder eine synchrone Datei hin. ProjectX macht ja Fehlerbehebung und Synchronisation aber ohne Videostream wird das schwierig ;)

 

Aber wie gesagt ich probiers heute Abend mal aus, ein Stück aus der Mitte am Anfang dranzuhängen, ich könnte mir durchaus vorstellen dass das funktioniert.

Link to comment

Soooooooooooooooo...

 

also ich habs grad mal ausprobiert ein Teil in der Mitte rauszuschneiden und am Anfang dranzuhängen. Anschließend hab ich es mit XMediaRecord reingeladen und was soll ich sagen....

 

ES FUNKTIONIERT!

 

Es ist zwar ein bisschen eine Krückenlösung aber das Endergebnis spricht für sich.

Tausend Dank an euch alle. Griga, dank deines Tipps hab ich endlich ne gescheite Lösung. Ich schneid einen Teil raus mit TSPlayer und verbinde die Teile mit TSSplitter (Kann das TSPlayer auch?).

 

Es gibt zwar Makroflecken an den Schnittkanten aber das wird von mir ja eh im Anschluss rausgeschnitten. Und vor allem bleibt das Ganze vollkommen synchron.

Somit bekommt man am Ende eine framegenau geschnittene zweisprachige MKV-Datei mit 1080p h.264-Video und AC3-Audio.

 

Falls Interesse besteht, kann ich ja mal nen kleinen Guide schreiben.

 

Also nochmals herzlichen Dank an euch alle, auch wenns eigentlich ne simple Lösung ist.

Wer weiß wie lange ich noch gebraucht hätte, bis mir das selber eingefallen wäre. ;D

Link to comment

Ein Guide wäre natürlich super!

 

Ich habe mal ein wenig mit dem neuen Eurosport HD Sender über Sky experimentiert. Bei mir ist ist nicht nur die ts Aufnahme asynchron, sondern bereits beim live Stream habe ich eine Asynchronität. Angezeit wird bei mir im DVBV. AC3 2.0

Ich nutze den AC3 Filter und den PowerDVD H264 Codec.

 

Meine leihenhafte Frage: Habe ich hierbei das selbe, hier beschriebene Problem?

 

Übrigens: DVBViewer spielt diese Aufnahme nicht korreckt ab, irgendwie wird es in 4:3 gestaucht. Ausserdem kann ich nicht Spulen, dabei pausiert Die Wiedergabe und wird minutenlang nicht forgesetzt, ein Killen des DVBV. ist dann notwendig. Abgespielt mit PowerDVD ist das Seitenverhältnis zwar ok 16:9, aber auch asynchron im Ton.

Link to comment

Hm, also dass dein Livestream bereits beim Live-TV asynchron ist, würde mich auf ein Codec-Problem schließen lassen.

 

Ich denke mal, dass du die aktuelle Version von AC3Filter nutzt?

Nutzt du SPDIF?

Empfängst du per DVB-S oder DVB-C?

Wie ist es mit anderen HD-Sendern?

 

Mein Problem kommt erst dadurch zustande, dass die ich Daten eines TS-Streams demuxe und nach dem Umwandeln per AviSynth wieder zusammensetzen will.

Dein Problem ist also in diesem Falle leider was anderes.

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...