Frage von Michael Spohn:Hallo!
Ich suche einen AC3-Patcher, mit dem ich einen vermeintlichen 2/0-Stream
zum 3/2-Stream umpatchen kann. Ein sehr bekannter Sender sendet immer
öfter erst einige Sekunden nach Filmbeginn den korrekten Header.
Während der sendereigene Vorspann noch in 2-Kanal-Dolby-Digital ist, ist
der Film meistens in DD 5.1. In Project X gibt es anscheinend die
Möglichkeit, den ersten Header zu patchen, das ist allerdings nicht das,
was ich benötige.
Der Patcher sollte die gesamte Datei bearbeiten, ähnlich wie der
DVD-Patcher das mit den Videodaten tut, damit hinterher auch *jede*
Schnittsoftware damit umgehen kann und egal, wo der Einstiegsschnitt
ist, der korrekte Header im AC3-Stream vorliegt.
Gibt es irgendwo so etwas?
--
Tschüß
Michael
Antwort von Michael Spohn:
Michael "Ingrid" Spohn schrieb:
> In Project X gibt es anscheinend die
> Möglichkeit, den ersten Header zu patchen, das ist allerdings nicht das,
> was ich benötige.
Genauer gesagt ist es nicht *ganz* das, was ich benötige. ProjectX kann
den ersten AC3-Header auf 3/2 patchen.
Der Patcher soll zwar *genau das* machen, aber halt über die gesamte
Datei hinweg ...
--
Tschüß
Michael
Antwort von Heinz Boehringer:
Hallo Michael,
>> In Project X gibt es anscheinend die
>> Möglichkeit, den ersten Header zu patchen, das ist allerdings
>> nicht das, was ich benötige.
>
> Genauer gesagt ist es nicht *ganz* das, was ich benötige. ProjectX
> kann den ersten AC3-Header auf 3/2 patchen.
>
> Der Patcher soll zwar *genau das* machen, aber halt über die gesamte
> Datei hinweg ...
schau mal bei http://www.doom9.net im Download nach
HeadAC3he 0.23a vielleicht bringt Dich das weiter.
Gruss
Heinz
Antwort von Jochen Arndt:
Michael Spohn schrieb:
> Michael "Ingrid" Spohn schrieb:
>
>> In Project X gibt es anscheinend die
>> Möglichkeit, den ersten Header zu patchen, das ist allerdings nicht =
das,
>> was ich benötige.
>
> Genauer gesagt ist es nicht *ganz* das, was ich benötige. ProjectX ka=
nn
> den ersten AC3-Header auf 3/2 patchen.
>
> Der Patcher soll zwar *genau das* machen, aber halt über die gesamte
> Datei hinweg ...
Ich glaube nicht, das ProjectX einen 2/0 Stream auf 3/2 patcht, sondern
eher einen einzelnen 3/2 Silent Frame vorne einfügt. Bei der weiteren
Verarbeitung mit anderen Programme erkennen diese den Stream dann als 3/2=
.
Ein 2/0 Stream kann nicht einfach auf 3/2 gepatcht werden. Es muss eine
Umkodierung erfolgen.
Das was da vom Sender kommt ist auch 2/0 und kein 3/2 mit falschem
Header. Das kann nach der AC3 Spezifikation nämlich nicht sein. Der
Decoder würde einen ungültigen Frame erkennen: Stille.
Das Ändern ist eigentlich auch gar nicht nötig, da der AC3 Decoder al=
les
für dich macht. Kurze Wechsel zwischen 2/0 und 3/2 bekommst du akustisc=
h
gar nicht mit.
Joe
Antwort von Michael Spohn:
Jochen Arndt schrieb:
> Michael Spohn schrieb:
>> Michael "Ingrid" Spohn schrieb:
>>
>>> In Project X gibt es anscheinend die
>>> Möglichkeit, den ersten Header zu patchen, das ist allerdings nicht das,
>>> was ich benötige.
>>
>> Genauer gesagt ist es nicht *ganz* das, was ich benötige. ProjectX kann
>> den ersten AC3-Header auf 3/2 patchen.
>>
>> Der Patcher soll zwar *genau das* machen, aber halt über die gesamte
>> Datei hinweg ...
>
> Ich glaube nicht, das ProjectX einen 2/0 Stream auf 3/2 patcht, sondern
> eher einen einzelnen 3/2 Silent Frame vorne einfügt. Bei der weiteren
> Verarbeitung mit anderen Programme erkennen diese den Stream dann als 3/2.
Das, was Du beschrieben hast, habe ich mit dem Womble auch schon
ausprobiert. Ich nahm ein Stück des Films, wo die Kennung auf 3/2 stand
und setzte die vor den Anfang des Films. Allerdings blieb es trotzdem
bei der 2/0-Kennzeichnung ...
Ich glaube, ich muß da noch etwas mehr "experimentieren". :-)
ProjectX patcht laut diverser Anleitungen im Netz tatsächlich den ersten
Header.
Es muß ja auch mittendrin im Stream stehen, was denn so darin ist. Ich
kann mit Womble MPEG2VCR an einer x-beliebigen Stelle eines Films
reinschneiden, und dann kennzeichnet er das abgespeicherte Ergebnis auch
richtig als 3/2. Aber oft wird halt beim ersten Bild noch die
2/0-Kennzeichnung gesendet, und da gibt es Probleme.
> Ein 2/0 Stream kann nicht einfach auf 3/2 gepatcht werden. Es muss eine
> Umkodierung erfolgen.
Es ist ja kein 2/0-Stream. Es ist 3/2 mit der Kennzeichnung eines
2/0-Streams! :-(;
> Das was da vom Sender kommt ist auch 2/0 und kein 3/2 mit falschem
> Header. Das kann nach der AC3 Spezifikation nämlich nicht sein.
Und warum schreiben dann viele Programme in den Header 2/0, wo doch aber
3/2 drin ist?
> Der
> Decoder würde einen ungültigen Frame erkennen: Stille.
Ich habe meinem DVD-Player noch keinen Stream vorgesetzt, der falsch
gekennzeichnet ist, aber wenn ich ihm nun eine DVD gebe, die eigentlich
eine 3/2-Spur hat, jedoch mit 2/0 gekennzeichnet ist, könnte es ja sein,
daß er ebenfalls einen ungültigen Frame erkennt und mir den gesamten Ton
nicht abspielt, denn Womble setzt 2/0 als Kennzeichnung in den gesamten
Stream ...
Daher kam ich ja auch darauf, einfach einen "echten" 3/2-Frame mit
schwarzem Bild vorne dranzuhängen. Aber das will irgendwie nicht.
> Das Ändern ist eigentlich auch gar nicht nötig, da der AC3 Decoder alles
> für dich macht. Kurze Wechsel zwischen 2/0 und 3/2 bekommst du akustisch
> gar nicht mit.
Na was denn nun? Erkennt der Dekoder einen ungültigen Frame, oder ist es
egal? :-)
DVDlab z. B. zeigt *das* an, was der MPEG2VCR in den Stream schreibt.
Nur schreibt der 2/0 rein, wenn der erste Frame noch 2/0 im Header hat,
obwohl es doch schon 3/2 ist ...
Erst, wenn man dort den In-Schnitt setzt, wo der Stream als 3/2
gekennzeichnet ist (;PVAStrumento zeigt den Wechsel ganz genau an),
schreibt MPEG2VCR *auch* 3/2 rein. Es ist also mit Sicherheit pro Frame
eine Kennzeichnung drin. Und die gilt es zu patchen.
Genaugenommen startet der AC3-Stream sogar immer 200 ms vorab. Das
heißt: 200 ms, bevor mit dem ersten Frame auf 3/2 "umgeschaltet" wird
(;Kennzeichnung 3/2 wird gesendet), geht schon die Ausstrahlung in 3/2
los. Die Kennzeichnung 2/0 wird aber manchmal sogar auch noch 200ms
später gesendet, bevor dann endlich "umgeschaltet" wird.
Naja, Ende des Monats läuft das Abo dieses "bekannten Senders" sowieso
aus, dann hat sich das Problem praktisch erledigt. Ich gebe keine fast
40 EUR für ein Abo aus, das bisher nur 26 kostete! Da leihe ich mir DVDs
lieber aus der Videothek, und was ich besonders gut finde, kaufe ich. Da
gibt's dann auch keine Probleme mit "falsch etikettierten" Streams :-)
--
Tschüß
Michael
Antwort von Michael Spohn:
Hallo Heinz!
Heinz Boehringer schrieb:
> schau mal bei http://www.doom9.net im Download nach
> HeadAC3he 0.23a vielleicht bringt Dich das weiter.
Hatte ich gestern auch noch probiert. Allerdings läßt sich da nichts
innerhalb des AC3-Streams patchen. Ich bräuchte so etwas wie den
genialen DVD-Patcher, nur halt für AC3-Audio-Streams.
Irgendwo hatte ich gestern ein professionelles Tool gefunden, nur
richtet sich das an Fernsehsender und kostet ein paar tausend Dollar zu
viel :-)
--
Tschüß
Michael
Antwort von Thomas Beyer:
Michael Spohn schrieb...
> Ich suche einen AC3-Patcher, mit dem ich einen vermeintlichen 2/0-Stream
> zum 3/2-Stream umpatchen kann. Ein sehr bekannter Sender sendet immer
> öfter erst einige Sekunden nach Filmbeginn den korrekten Header.
Ein Standalone mit korrekt arbeitender Firmware hat mit solchen
dynamischen Wechseln der Kanalanzahl in keinster Weise ein Problem.
Mäklige Firmwares lassen sich u.U. leichter überzeugen, wenn man als VMG
mastert, obwohl nur ein VTS vorliegt.
> Während der sendereigene Vorspann noch in 2-Kanal-Dolby-Digital ist, ist
> der Film meistens in DD 5.1.
An der Stelle cutten wäre die einfachste Möglichkeit.
> In Project X gibt es anscheinend die
> Möglichkeit, den ersten Header zu patchen, das ist allerdings nicht das,
> was ich benötige.
>
> Der Patcher sollte die gesamte Datei bearbeiten, ähnlich wie der
> DVD-Patcher das mit den Videodaten tut, damit hinterher auch *jede*
> Schnittsoftware damit umgehen kann und egal, wo der Einstiegsschnitt
> ist, der korrekte Header im AC3-Stream vorliegt.
AC3fix berechnet u.a. auch, ob die Blockgröße logisch und konsistent ist
und ändert dies bei Bedarf. Allerdings fabrizierte dieses Tool bei mir
mehr Unsinn, als das es nützlich gewesen wäre, so daß diese
"Empfehlung" mit Vorsicht zu genießen ist.
MfG,
Thomas
Antwort von Jochen Arndt:
Michael Spohn schrieb:
[...]
>> Ein 2/0 Stream kann nicht einfach auf 3/2 gepatcht werden. Es muss ein=
e
>> Umkodierung erfolgen.
>
> Es ist ja kein 2/0-Stream. Es ist 3/2 mit der Kennzeichnung eines
> 2/0-Streams! :-(;
Nein. Ein AC3 Stream besteht aus Frames. *Jeder* Frame enthält *alle*
Format Angaben. Unter anderem die Anzahl der im Frame enthaltenen
Kanäle. Welche Daten wo im Frame enthalten sind, hängt vom Format ab.=
Daher kann das acmod Feld, das die Anzahl der Kanäle enthält nicht
einfach geändert werden (;selbst wenn man auch die Prüfsummen des Fram=
es
anpasst). Der gesamte Frame müsste neu erstellt werden.
> Und warum schreiben dann viele Programme in den Header 2/0, wo doch abe=
r
> 3/2 drin ist?
Tun sie bestimmt nicht. Einen festen Header gibt es bei AC3 nicht (;naja,
ganz am Anfang ist der sog. syncinfo Block mit fester Grösse und
Zuordnung). Bei der Angabe was für ein Format vorliegt, verhalten sich
Programme allerdings unterschiedlich:
- Nach dem Format des ersten Frames
- Nach dem Format der Frames, die am häufigsten im Stream enthalten sin=
d
Die zweite Methode erfordert allerdings das komplette Parsen des Streams.=
>> Das Ändern ist eigentlich auch gar nicht nötig, da der AC3 Decoder=
alles
>> für dich macht. Kurze Wechsel zwischen 2/0 und 3/2 bekommst du akust=
isch
>> gar nicht mit.
>
> Na was denn nun? Erkennt der Dekoder einen ungültigen Frame, oder ist=
es
> egal? :-)
Natürlich erkennt er einen ungültigen Frame und gibt nichts aus. Ich
meinte Wechsel zwischen gültigen Frames mit unterschiedlichen Formaten.=
> DVDlab z. B. zeigt *das* an, was der MPEG2VCR in den Stream schreibt.
> Nur schreibt der 2/0 rein, wenn der erste Frame noch 2/0 im Header hat,=
> obwohl es doch schon 3/2 ist ...
Er geht also nach dem ersten Header. Und das *ist* 2/0.
> Erst, wenn man dort den In-Schnitt setzt, wo der Stream als 3/2
> gekennzeichnet ist (;PVAStrumento zeigt den Wechsel ganz genau an),
> schreibt MPEG2VCR *auch* 3/2 rein. Es ist also mit Sicherheit pro Frame=
> eine Kennzeichnung drin. Und die gilt es zu patchen.
Ja. s.o. Und die kann man nicht patchen, sondern muss den kompletten
Frame umkodieren. Direkt nach dem acmod Feld, das die Anzahl der Kanäle=
enthält, folgen nämlich Felder, die je nach Modus existieren oder nic=
ht
(;bei 2/0 z.B. 2 Bit für die Surround Kennung).
> Genaugenommen startet der AC3-Stream sogar immer 200 ms vorab. Das
> heißt: 200 ms, bevor mit dem ersten Frame auf 3/2 "umgeschaltet" wird=
> (;Kennzeichnung 3/2 wird gesendet), geht schon die Ausstrahlung in 3/2
> los. Die Kennzeichnung 2/0 wird aber manchmal sogar auch noch 200ms
> später gesendet, bevor dann endlich "umgeschaltet" wird.
Die Kennzeichnung wird nicht gesendet. Es wird ein AC3 Stream gesendet.
Und wenn Frames darin behaupten 2/0 zu sein, so müssen sie es auch sein=
,
da sie sonst ungültig wären.
> Naja, Ende des Monats läuft das Abo dieses "bekannten Senders" sowies=
o
> aus, dann hat sich das Problem praktisch erledigt. Ich gebe keine fast
> 40 EUR für ein Abo aus, das bisher nur 26 kostete! Da leihe ich mir D=
VDs
> lieber aus der Videothek, und was ich besonders gut finde, kaufe ich. D=
a
> gibt's dann auch keine Probleme mit "falsch etikettierten" Streams :-)
Um es nochmal kurz zu sagen:
Wo 2/0 drinsteht ist auch 2/0 drin. Du gehst (;oder hoffentlich jetzt:
gingst) davon aus, das 3/2 Frames mit falscher Kennzeichnung vorliegen.
Das ist definitiv nicht der Fall.
Ich schneide gleich beim Demuxen mit ProjectX am ersten 16:9 Bild. Da
liegen in 99% aller Fälle auch schon 3/2 Frames vor.
Joe
Antwort von Michael Spohn:
Jochen Arndt schrieb:
> Michael Spohn schrieb:
>
> [...]
>
>>> Ein 2/0 Stream kann nicht einfach auf 3/2 gepatcht werden. Es muss eine
>>> Umkodierung erfolgen.
>>
>> Es ist ja kein 2/0-Stream. Es ist 3/2 mit der Kennzeichnung eines
>> 2/0-Streams! :-(;
>
> Nein. Ein AC3 Stream besteht aus Frames. *Jeder* Frame enthält *alle*
> Format Angaben. Unter anderem die Anzahl der im Frame enthaltenen
> Kanäle. Welche Daten wo im Frame enthalten sind, hängt vom Format ab.
> Daher kann das acmod Feld, das die Anzahl der Kanäle enthält nicht
> einfach geändert werden (;selbst wenn man auch die Prüfsummen des Frames
> anpasst). Der gesamte Frame müsste neu erstellt werden.
>
>> Und warum schreiben dann viele Programme in den Header 2/0, wo doch aber
>> 3/2 drin ist?
>
> Tun sie bestimmt nicht.
So... Mit MPEG2VCR nehme ich einen Film, bei dem zum ersten 16:9-Bild
auch ein 5.1-Frame gehört. Das Ergebnis ist ein Film, bei dem alle
Frames die Kennzeichnung 6-channel AC-3 haben.
Beginne ich den Schnitt einen einzigen Frame vorher, wo noch ein
2/0-Frame ist, hat der gesamte Film hinterher 2-channel-AC-3.
Wenn Deine Aussage "Tun sie bestimmt nicht" korrekt wäre, müßte ich nun
den geschnittenen Film mit der 2/0-Kennzeichnung nehmen können und
einfach den ersten Frame mit dem 2/0-AC-3-Frame wegschneiden können, so
daß das Ergebnis wieder nur 6-channel-AC-3 hat. Und genau *das* ist
eigenartigerweise *nicht* so!
Dummerweise speichert MPEG2VCR alles mit der geringsten Kanalzahl im AC3
ab. Ich kann also nicht einen 6-Kanal-AC3-Teil vorneweg reinpacken, und
hinterher ist alles 6-Kanal. Nein, es bleibt alles 2-Kanal-AC3.
Ich hoffe, ich habe mich verständlich ausgedrückt ... :-)
Ich sehe auch den Widerspruch zu den Tatsachen. Und das alles liegt ja
noch nicht mal an mangelndem Verständnis meinerseits!
> Einen festen Header gibt es bei AC3 nicht (;naja,
> ganz am Anfang ist der sog. syncinfo Block mit fester Grösse und
> Zuordnung). Bei der Angabe was für ein Format vorliegt, verhalten sich
> Programme allerdings unterschiedlich:
> - Nach dem Format des ersten Frames
> - Nach dem Format der Frames, die am häufigsten im Stream enthalten sind
> Die zweite Methode erfordert allerdings das komplette Parsen des Streams.
Bei DVB gibt es ja eigentlich gar keinen echten "Anfang". Also macht
entweder das Streaming-Programm einen Fehler mit der Kennzeichnung der
AC-3-Frames, oder ... ?!?
Da der Sender den AC3-Stream sogar immer mit 200ms Predelay sendet,
müßte doch sogar schon 200ms vor dem ersten 16:9-Bild 6-Kanal-AC3
"ankommen"!? Und das verstehe ich nicht, warum die WinGrab-Engine
frühestens auf dem ersten Bild den AC3-Frame als 6-Kanal "empfängt",
bzw. auf die Platte schreibt.
> Die Kennzeichnung wird nicht gesendet. Es wird ein AC3 Stream gesendet.
> Und wenn Frames darin behaupten 2/0 zu sein, so müssen sie es auch sein,
> da sie sonst ungültig wären.
Leider habe ich keinen Digitalverstärker, den ich mal an die DBox hängen
könnte. Und am Anfang eines Films ist ja auch meistens Stille, so daß
man einen Fehler gar nicht feststellen könnte, wenn ein Frame mit
Lautstärke null einfach als ungültiger Frame "ausgelassen" wird :-)
> Um es nochmal kurz zu sagen:
> Wo 2/0 drinsteht ist auch 2/0 drin. Du gehst (;oder hoffentlich jetzt:
> gingst) davon aus, das 3/2 Frames mit falscher Kennzeichnung vorliegen.
> Das ist definitiv nicht der Fall.
Ich schrieb es oben auch schonmal: MPEG2VCR macht beim Abspeichern aus
*allen* AC3-Frames plötzlich 2/0er, selbst wenn das eigentlich 5.1er
sein müßten, sobald auch nur *ein* 2/0-Frame in dem gesamten Program
Stream vorhanden ist!
Und das passt leider nicht mit Deiner sehr guten Erklärung zusammen.
--
Tschüß
Michael
Antwort von Michael Spohn:
Thomas Beyer schrieb:
>> Während der sendereigene Vorspann noch in 2-Kanal-Dolby-Digital ist, ist
>> der Film meistens in DD 5.1.
>
> An der Stelle cutten wäre die einfachste Möglichkeit.
Ich weiß, hat bei den letzten 100 Filmen ja auch immer geklappt! :-)
Bei einem Film neulich ist der erste 5.1-Frame aber erst ein paar Bilder
später als das erste Bild, und das bei eigentlichen 200ms Predelay und
der Ton beginnt auch noch genau mit dem ersten Bild.
>> In Project X gibt es anscheinend die
>> Möglichkeit, den ersten Header zu patchen, das ist allerdings nicht das,
>> was ich benötige.
>>
>> Der Patcher sollte die gesamte Datei bearbeiten, ähnlich wie der
>> DVD-Patcher das mit den Videodaten tut, damit hinterher auch *jede*
>> Schnittsoftware damit umgehen kann und egal, wo der Einstiegsschnitt
>> ist, der korrekte Header im AC3-Stream vorliegt.
>
> AC3fix berechnet u.a. auch, ob die Blockgröße logisch und konsistent ist
> und ändert dies bei Bedarf. Allerdings fabrizierte dieses Tool bei mir
> mehr Unsinn, als das es nützlich gewesen wäre, so daß diese
> "Empfehlung" mit Vorsicht zu genießen ist.
Na, das ist doch wenigstens mal ein *Programmname*, nach dem ich suchen
kann, um es auszutesten. Danke! Vielleicht funktioniert es ja wenigstens
so, wie ich es benötige ...
Evtl. werde ich auch nochmal mit BeSweet testen, allerdings enkodiert
dieses Programm wohl komplett neu, wenn ich das auf die Schnelle richtig
aufgeschnappt habe.
--
Tschüß
Michael
Antwort von Thomas Beyer:
Michael Spohn schrieb...
> Bei einem Film neulich ist der erste 5.1-Frame aber erst ein paar Bilder
> später als das erste Bild, und das bei eigentlichen 200ms Predelay und
> der Ton beginnt auch noch genau mit dem ersten Bild.
Härtefall ;-). Vielleicht sollte ich mir von Dir mal die ersten paar
Bytes zur Analyse schicken lassen.
[AC3Fix]
> Na, das ist doch wenigstens mal ein *Programmname*, nach dem ich suchen
> kann, um es auszutesten. Danke! Vielleicht funktioniert es ja wenigstens
> so, wie ich es benötige ...
Ich hatte vor zwei, drei Jahren mal ein ähnliches Problem, bei dem
AC3Fix sich als ganz brauchbar erwies. Bei späteren sporadischem
Antesten hat es allerdings immer mal wieder komplett versagt. Beim
Googlen nach AC3Fix sind die ersten Hits gleich passend.
Bei der Gelegenheit kannst Du auch mal versuchen, ob BeSliced (;Frontend)
mit BeSplit von DSPGuru eventuell besser arbeitet. Zitat aus dem ReadMe:
This program is useful for :
1. Creating dummy audio file. (;dummy files are files with single frame
only)
2. Fixing corrupted audio files. (;including AAC, AC3, VBR MP3 & Waves
with a corrupted header).
3. Removing wave headers from streams that was originally extracted from
AVI.
> Evtl. werde ich auch nochmal mit BeSweet testen, allerdings enkodiert
> dieses Programm wohl komplett neu, wenn ich das auf die Schnelle richtig
> aufgeschnappt habe.
BeSweet ist in Bezug auf AC3 - höflich gesagt - mit Vorsicht zu
genießen. Die Routinen für AC3 sind von DarkAvenger, und der
mag seine damaligen Ergüsse gar nicht mehr. Mittlerweile kommt von ihm
ein neuer Versuch: HeadAC3he (;völlig veraltet auf seiner Homepage unter
http://mitglied.lycos.de/darkav/, aktuell zusammenzusammeln unter
http://forum.gleitz.info/showthread.php?t202)
Aber Neuenkodierung ist bäh. ;-)
Gruß,
Thomas
Antwort von Thomas Beyer:
Michael Spohn schrieb...
> So... Mit MPEG2VCR nehme ich einen Film, bei dem zum ersten 16:9-Bild
> auch ein 5.1-Frame gehört. Das Ergebnis ist ein Film, bei dem alle
> Frames die Kennzeichnung 6-channel AC-3 haben.
Mal eine Zwischenfrage: Mit was testest Du das? Mir kommt dies alles
seltsam vor. Ich habe hier mal per simplem Join ein kurzes Stück AC3 2.0
und 5.1 vermatscht, gut geschüttelt mit einem Videostream passender
Länge als DVD mit DVDLabPro geauthort.
Auf dem PC zeigt der NVidia Audio Dekoder in den Properties des
Directshowfilters sogar live den Wechsel an. Elecards und Intervideos
Dekoder verhalten sich adäquat.
Panasonic S47 Yamaha Z9 == Formatwechsel sowohl in der Anzeige des Z9
als auch wiedergabetechnisch i.O.
Pioneer 575 Yamaha V470 == siehe oben
Gruß,
Thomas
Antwort von Jochen Arndt:
Michael Spohn schrieb:
> So... Mit MPEG2VCR nehme ich einen Film, bei dem zum ersten 16:9-Bild
> auch ein 5.1-Frame gehört. Das Ergebnis ist ein Film, bei dem alle
> Frames die Kennzeichnung 6-channel AC-3 haben.
>
> Beginne ich den Schnitt einen einzigen Frame vorher, wo noch ein
> 2/0-Frame ist, hat der gesamte Film hinterher 2-channel-AC-3.
Da gibt es nur zwei Möglichkeiten:
1. MPEG2VCR kodiert alles um (;das wäre schlecht)
2. Dein(;e) Programm(;e) zeigen dir 2/0 an, obwohl sehr wohl später 3/2
Frames kommen.
> Wenn Deine Aussage "Tun sie bestimmt nicht" korrekt wäre, müßte i=
ch nun
> den geschnittenen Film mit der 2/0-Kennzeichnung nehmen können und
> einfach den ersten Frame mit dem 2/0-AC-3-Frame wegschneiden können, =
so
> daß das Ergebnis wieder nur 6-channel-AC-3 hat. Und genau *das* ist
> eigenartigerweise *nicht* so!
>
> Dummerweise speichert MPEG2VCR alles mit der geringsten Kanalzahl im AC=
3
> ab. Ich kann also nicht einen 6-Kanal-AC3-Teil vorneweg reinpacken, und=
> hinterher ist alles 6-Kanal. Nein, es bleibt alles 2-Kanal-AC3.
Das ist, wie gesagt schlecht. Klingt wirklich so, als wird der Stream
umgewandelt.
> Ich hoffe, ich habe mich verständlich ausgedrückt ... :-)
Ja. Es fehlt aber noch die Information, wie du definitiv feststellst,
dass alle Frames jetzt in 2/0 vorliegen (;also wirklich konvertiert wurden=
).
> Ich sehe auch den Widerspruch zu den Tatsachen. Und das alles liegt ja
> noch nicht mal an mangelndem Verständnis meinerseits!
>
>> Einen festen Header gibt es bei AC3 nicht (;naja,
>> ganz am Anfang ist der sog. syncinfo Block mit fester Grösse und
>> Zuordnung). Bei der Angabe was für ein Format vorliegt, verhalten si=
ch
>> Programme allerdings unterschiedlich:
>> - Nach dem Format des ersten Frames
>> - Nach dem Format der Frames, die am häufigsten im Stream enthalten =
sind
>> Die zweite Methode erfordert allerdings das komplette Parsen des Strea=
ms.
>
> Bei DVB gibt es ja eigentlich gar keinen echten "Anfang". Also macht
> entweder das Streaming-Programm einen Fehler mit der Kennzeichnung der
> AC-3-Frames, oder ... ?!?
Wie gesagt: Die Kennzeichnung der Frames ist eindeutig.
> Da der Sender den AC3-Stream sogar immer mit 200ms Predelay sendet,
> müßte doch sogar schon 200ms vor dem ersten 16:9-Bild 6-Kanal-AC3
> "ankommen"!? Und das verstehe ich nicht, warum die WinGrab-Engine
> frühestens auf dem ersten Bild den AC3-Frame als 6-Kanal "empfängt"=
,
> bzw. auf die Platte schreibt.
Das liegt an den Sendern. Da kommt 3/2 oft mit Verspätung (;besonders be=
i
Pro7 nach den Werbepausen).
> Leider habe ich keinen Digitalverstärker, den ich mal an die DBox hä=
ngen
> könnte. Und am Anfang eines Films ist ja auch meistens Stille, so daß=
> man einen Fehler gar nicht feststellen könnte, wenn ein Frame mit
> Lautstärke null einfach als ungültiger Frame "ausgelassen" wird :-)=
Ich verwende hier ein eigenes Kommandozeilenprogramm, dass AC3 Dateien
analysieren kann. Das zeigt dann jeden Formatwechsel sowie alle
fehlerhaften Frames an. Bei Bedarf kann ich es dir per Mail schicken. Es
ist zwar nicht reif für die Allgemeinheit, reicht aber für o.g. Zweck=
.
Ausgabe sieht dann z.B. so aus:
Analyzing file e:videoac3.bin
AC3 file, size 6 KB, estimated 6 frames / 00:00:00.192
Frame size 1024 byte, AC3 bit rate 256 kbps, sample rate 48000 Hz
AC3 version 8, Mode: 0 = complete main (;CM)
DD 2.0 (;2/0), DS: 0 = not indicated
DialNorm: 23, Compression: yes
Bit rate / frame size changes in frame 2, time 00:00:00.064
Frame size 1536 byte, AC3 bit rate 384 kbps, sample rate 48000 Hz
Bit rate / frame size changes in frame 3, time 00:00:00.096
Frame size 1792 byte, AC3 bit rate 448 kbps, sample rate 48000 Hz
Channel mode changes in frame 4, time 00:00:00.128
DD 5.1 (;3/2), cmixlev: 0.707 (;-3.0 db), surmixlev: 0.707 (;-3.0 db)
DialNorm: 27, Compression: yes
4 frames processed, play time is 00:00:00.128
Solche Wechsel schluckt jeder Decoder ohne Probleme.
Joe
Antwort von Michael Spohn:
Jochen Arndt schrieb:
> Da gibt es nur zwei Möglichkeiten:
> 1. MPEG2VCR kodiert alles um (;das wäre schlecht)
> 2. Dein(;e) Programm(;e) zeigen dir 2/0 an, obwohl sehr wohl später 3/2
> Frames kommen.
Dazu müßte ich nochmal mit PVAstrumento drangehen, um zu sehen, ob der
von MPEG2VCR abgespeicherte Stream tatsächlich nur als 2/0
gekennzeichnete Frames enthält. DVDlab zeigt jedenfalls 2/0 an.
Wenn ich mit MPEG2VCR von der Kopie die ersten paar Frames abschneide,
bis dorthin, wo im Original auf 3/2 umgeschaltet wird, dann speichert er
wieder nur 2/0 ab. Schneide ich das Original ab der Stelle, wird es 3/2.
>> Dummerweise speichert MPEG2VCR alles mit der geringsten Kanalzahl im AC3
>> ab. Ich kann also nicht einen 6-Kanal-AC3-Teil vorneweg reinpacken, und
>> hinterher ist alles 6-Kanal. Nein, es bleibt alles 2-Kanal-AC3.
>
> Das ist, wie gesagt schlecht. Klingt wirklich so, als wird der Stream
> umgewandelt.
Nein, das Abspeichern des fertigen Filmes dauert immer gleich lang. Und
mein DVD-Player spielt auch 5.1-Ton ab. Aber was machen andere Player
daraus? Ignorieren die, wie der Stream in den VOBs gekennzeichnet ist?
>> Ich hoffe, ich habe mich verständlich ausgedrückt ... :-)
>
> Ja. Es fehlt aber noch die Information, wie du definitiv feststellst,
> dass alle Frames jetzt in 2/0 vorliegen (;also wirklich konvertiert wurden).
Sie werden nicht konvertiert, nur falsch gekennzeichnet. AC3fix macht
aber auch nichts mit der Datei und läßt sie bei 2/0. Und wenn ich eine
3/2-AC3-Datei habe, dann macht er daran auch nichts.
>> Bei DVB gibt es ja eigentlich gar keinen echten "Anfang". Also macht
>> entweder das Streaming-Programm einen Fehler mit der Kennzeichnung der
>> AC-3-Frames, oder ... ?!?
>
> Wie gesagt: Die Kennzeichnung der Frames ist eindeutig.
Auch bindend für den Dekoder? :-)
> Das liegt an den Sendern. Da kommt 3/2 oft mit Verspätung (;besonders bei
> Pro7 nach den Werbepausen).
Und beim Pay-TV frühestens mit dem ersten Bild, obwohl AC3 mit 200ms
Predelay gesendet wird.
> Ich verwende hier ein eigenes Kommandozeilenprogramm, dass AC3 Dateien
> analysieren kann. Das zeigt dann jeden Formatwechsel sowie alle
> fehlerhaften Frames an. Bei Bedarf kann ich es dir per Mail schicken. Es
> ist zwar nicht reif für die Allgemeinheit, reicht aber für o.g. Zweck.
>
> Ausgabe sieht dann z.B. so aus:
Das macht PVAstrumento so ähnlich. Ich glaube, ich werde erstmal weitere
Versuchsreihen mit dem geschnittenen Stream machen.
> Solche Wechsel schluckt jeder Decoder ohne Probleme.
Fragt sich bloß, was in anderen Playern passiert, wenn ein 3/2-Stream
als 2/0 gekennzeichnet ist. Mein Xoro packt es ja, aber was, wenn der
mal kaputt ist ...
--
Tschüß
Michael
Antwort von Andre Beck:
Michael Spohn
writes:
> Jochen Arndt schrieb:
>> Das ist, wie gesagt schlecht. Klingt wirklich so, als wird der Stream
>> umgewandelt.
>
> Nein, das Abspeichern des fertigen Filmes dauert immer gleich lang. Und
> mein DVD-Player spielt auch 5.1-Ton ab. Aber was machen andere Player
> daraus? Ignorieren die, wie der Stream in den VOBs gekennzeichnet ist?
Die übliche Wiedergabekette ist vom S/P-DIF des Players zum DD-Amp. Dabei
spielt die Metainformation über das Tonformat, die sich in den DVD-Daten-
strukturen findet, überhaupt keine Rolle. Der Stream geht "nackt" an den
Decoder und der interpretiert jedes Frame *individuell* anhand seiner
Flags und spielt es aus. Selbst bei Playern mit eingebauten Decodern und
Softwareplayern geht das eigentlich nicht anders, weil man ein 5.1-Frame
nicht als 2.0-Frame ausspielen kann, es sei denn der Code ist sehr seltsam.
>> Ja. Es fehlt aber noch die Information, wie du definitiv feststellst,
>> dass alle Frames jetzt in 2/0 vorliegen (;also wirklich konvertiert wurden).
>
> Sie werden nicht konvertiert, nur falsch gekennzeichnet.
*Wo* werden sie "falsch gekennzeichnet"? Im AC3-Stream Frameheader sicher
nicht, das würde wie gesagt erfordern mehr als nur ein paar Bits zu kippen.
Hast Du Dir diese falsche Kennzeichnung mit einem Hexeditor angesehen?
>> Wie gesagt: Die Kennzeichnung der Frames ist eindeutig.
>
> Auch bindend für den Dekoder? :-)
Ja. Das ist nämlich (;in der gängigen Implementation) das einzige, was
er da hat. Er bekommt einen DD-Stream. Was *drin* ist muss er selbst
rausfinden, dazu kann er gar keine Metainformationen bekommen. Man kann
sich jetzt natürlich gern über Implementationen von Softwareplayern oder
Konvertierprogrammen unterhalten, die falsche Annahmen aus den ersten
Frames oder den DVD-Metainformationen ableiten und diese dann auf den
ganzen Stream ausdehnen, aber das ist strenggenommen müßig. Diese Soft-
ware ist schlicht defekt. Wobei eine korrekte Kodierung des Streams auch
in den Metadaten natürlich für eine korrekte DVD notwendig ist, aber das
ist wie gesagt für den DD-Decoder relativ irrelevant. Er kann die Frames
nur so dekodieren, wie sie sind, nicht wie irgendeine andere Informations-
quelle behauptet, dass sie wären.
>> Das liegt an den Sendern. Da kommt 3/2 oft mit Verspätung (;besonders bei
>> Pro7 nach den Werbepausen).
>
> Und beim Pay-TV frühestens mit dem ersten Bild, obwohl AC3 mit 200ms
> Predelay gesendet wird.
Du verbindest mit dem "beeinanderliegen" der Audio- und Videoframes im
System Stream (;hier TS, aber dito bei PS) mehr Information, als wirklich
da ist. Welcher Audioframe zu welchem Videoframe gehört, ist über Zeit-
stempel in den Frames geregelt. Ein "Predelay" ist nix weiter als eine
vereinfachende Aussage über einen konstanten Versatz dieser Zeitstempel.
BTW, Du bist Dir sicher, das Audiodelay von 200ms bedeutet, die Audioframes
kommen zeitiger im Datenstrom? Nicht vielleicht später? Letzteres würde
Deine Beobachtungen perfekt unterstützen.
Wenn tatsächlich verspätet auf 5.1 "umgeschalten" wird, dann stellt sich
die Frage, was der Sender da vorher für Frames verschickt. Silence? Einen
2.0-Downmix? Und warum? Wie ist das überhaupt bei 5.1-Ausstrahlungen in
DVB, wird da eigentlich vorbereitetes Material gesendet oder wird das live
von einem Mehrspurmaster encodet? Kann ich mir nicht vorstellen, ist aber
deswegen nicht auszuschließen, das MPEG Video entsteht ja auch wider Er-
warten live...
>> Solche Wechsel schluckt jeder Decoder ohne Probleme.
>
> Fragt sich bloß, was in anderen Playern passiert, wenn ein 3/2-Stream
> als 2/0 gekennzeichnet ist. Mein Xoro packt es ja, aber was, wenn der
> mal kaputt ist ...
Der Player gibt es sowieso nur an den DD-Decoder ;)
--
The S anta C laus O peration
or "how to turn a complete illusion into a neverending money source"
-> Andre "ABPSoft" Beck ABP-RIPE Dresden, Germany, Spacetime <-