Jump to content

Asynchrone Wiedergabe


Derrick

Recommended Posts

Naive Frage ;)

 

Wie kann der graph bei live-wiedergabe asynchron werden, wenn es ein paar discontinuitäten gegeben hat? Die time stamps sollten den stream doch wieder einregeln. Hier ein beispiel von Das Erste (deu). Nach auftreten der streamfehler hinkt der ton deutlich hinterher. Rebuild Graph richtet es natürlich wieder, aber das war nicht die frage ;)

Link to comment

IMO kann das passieren, wenn Decoder die vom Splitter angegebenen Zeitstempel ignorieren (abgesehen vielleicht vom ersten nach einem Stop -> Run), und dafür aus der Framedauer kumulativ eigene PTS berechnen, also z.B. bei 25 fps für jedes ausgelieferte Video-Frame 40 ms addieren und die daraus resultierenden PTS an die Renderer weitergeben. Wenn dann Frames ausfallen, stimmt der AV-Sync nicht mehr. Bei mir tritt dieser Effekt reproduzierbar mit den LAV-Filtern bei HDTV-Wiedergabe unter Windows 7 auf. Video und Audio sind nur bis zur ersten Diskontinuität synchron.

 

Dass die LAV Filter (einschließlich Splitter) so vorgehen, lässt sich auch aus der Tatsache schließen, dass sie im Gegensatz zum DVBSource beim Seamless Branching von M2TS / BluRay-Material keine Probleme haben. Die dabei auftretenden PCR/PTS/CC-Diskontinuitäten interessieren überhaupt nicht, wenn die Video/Audio-PTS ausgehend von einem Startzeitpunkt frameweise weitergerechnet werden. Der DVBSource kümmert sich dagegen sehr um PCR/PTS, aber kaum um die Frame-Struktur.

 

Hintergrund dürfte sein, dass manche Entwickler ihre Filter für Dateiwiedergabe auslegen und nur damit testen. Die Anforderungen, die sich aus eventuell lückenhaften Live-Streams ergeben, haben sie nicht auf der Rechnung.

Link to comment

Das ist ja schlimmer als ich dachte. Dann sind tv-applikationen wie der dvbv eigentlich ungeeignet für live-tv, wenn solche filter verwendet werden. Selbst QEF garantiert ja nicht, dass kein fehler am anfang einer sendung auftreten kann. Bei TS-aufnahmen wird sich das wahrscheinlich auch nicht anders verhalten, es sei denn die fehlerstellen werden geflickt.

Link to comment

Es gibt zwei Lösungsansätze:

 

Entweder sendet der DVBViewer Filter der Host-App bei Diskontinuitäten eine Message, die ein -> Stop -> Run nach sich zieht, (so wie jetzt schon bei einer PCR/PTS-Diskontinuität im Live-Betrieb), wobei mehrere kurz aufeinanderfolgende Diskontinuitäten zusammenzufassen wären. Ein Stop setzt die Zeitbasis auf jeden Fall zurück. Der "kurze Dienstweg", nämlich ein direktes Auslösen von -> Stop -> Run Im Streaming Thread, wo die Diskontinuitäten erkannt werden, ist leider ausgeschlossen, da es zu einem Deadlock führen würde.

 

Oder die Decoder lernen, sauber auf die vom Source Filter über das IMediaSample-Interface gemeldeten Diskontinuitäten zu reagieren, indem sie auch ohne zwischenzeitliches Stop den nächsten Zeitstempel als neue Basis verwenden. Meine Erwartung, dass Decoder das normalerweise immer tun, scheint nicht zuzutreffen.

Link to comment

Stop-Run bei jeder Diskontinuität wäre dann aber immer wahrnehmbar oder?

 

Lässt sich das auch mit Aufnahmen (.ts mit zahlreichen Discontinuities) testen?

Link to comment

Das ist aber doch mal interessant und erklärt die unterschiedlichen Ergebnisse mit dem LAV-Decoder.

In der tat.Bei kleinen fehlern, die sich in artefakten äussern, sind viele nicht so pingelig. Asynchronität stört aber selbst die hartgesottenen. Deshalb wird dann meist an den falschen stellen nach ursachen und abstellung gesucht.

 

Ein wahllos herausgegriffenes beispiel (muss nicht unbedingt zutreffend sein ;) )

 

http://www.DVBViewer.tv/forum/topic/51888-bild-ton-asynchron/?hl=asynchron

Link to comment

Ein wahllos herausgegriffenes beispiel

 

Asynchronität bei Audio-Ausgabe via AVR ist eine Sache für sich und fällt in eine andere Problemkategorie.

 

Stop-Run bei jeder Diskontinuität wäre dann aber immer wahrnehmbar oder?

 

Auf jeden Fall.

 

Ich werde mal über eine Testimplementation der oben erwähnten. -> Stop -> Run-Methode im DVBViewer Filter nachdenken... schön ist das kurzzeitige Anhalten der Wiedergabe nicht, aber womöglich das kleinere Übel.

Link to comment

Ich habe gerade im DVBViewer GE eine Funktion ergänzt, die einen einstellbaren Prozentsatz der eintreffenden TS-Pakete in zufälliger Verteilung unter den Tisch fallen lässt. Bei 1 % sind Video und Audio massiv gestört, werden aber auf meinem XP-PC mit den LAV Filtern nicht asynchron (getestet mit dem Ersten, MPEG2 Video + MPEG oder AC3 Audio, auch mit dem AC3 Filter). Hmm... braucht es vielleicht fehlende Pakete in Serie, oder muss noch etwas anderes dazukommen?

 

Ich werde es nachher noch einmal auf einem anderen PC unter Windows 7 testen...

Link to comment

Es sind entweder bestimmte pakete oder wahrscheinlicher bursts von mehreren paketen, die fehlen. Ich bin überhaupt auf dieses thema gekommen, weil ich mit disconties kämpfe. Anscheinend hängt es mit der hardware (laptop, usb) zusammen. Jetzt habe ich mal probiert durch wilde aktionen disconties zu provozieren. Bis 4 disc. lief es noch in sync, danach ab 6 disc. plötzlich nicht mehr. Alles mit LAV-filtern. Gleichzeitig lasse ich über upnp denselben stream noch auf einem TV laufen. Dort bleibt alles in sync, während der ton vom DVBViewer auf dem lappi total hinterher hinkt.

Link to comment

..noch ne erkenntnis: Habe fast 2h über RS einen lokalen Pro-client auf dem Win7/64 I7-laptop, einen remote client auf einem XP-laptop und den upnp client mit demselben stream versorgt. Disconties 21 in 2h. Viel zu viel aber gut für den test.

 

Lokaler client auf Win7 wird asynchron.

remote client auf XP bleibt synchron und der upnp-client sowieso.

 

LAV-filter 0.55.3 sowohl lokal als auch remote.

 

Unterschiede: EVR custom auf Win7, VMR9 auf XP; ausserdem läuft der LAV auf dem Win7 mit hardware acceleration. Das müsste ich noch mal ändern..

 

Fazit: Je nach system kann die wiedergabe unbrauchbar werden. Ohne pc geht's besser :)

Link to comment

..da anscheinend sonst keiner probleme mit asynchronen graphen hat, bin ich weiterhin am probieren. Zwischen dem Win7 und XP setup gab es noch einen unterschied. Bei XP fehlte ein haken bei "Use DVB Clock" im source filter. Jetzt habe ich beim Win7 laptop die beiden unteren haken entfernt.

Nun läuft der graph schon eine ganze weile lippensynchron trotz einer anzahl disconties. o:)

Link to comment

...kann ich z.z. nicht mit dienen. Vielleicht in 3 wochen wieder, falls das problem bis dahin nicht gelöst ist (so geht es aber auch).

 

Was ich im wiki dazu gefunden habe, ist schwammig und hilft. ebensoweing wie die readme's vom source filter.

Link to comment

Bei XP fehlte ein haken bei "Use DVB Clock" im source filter.

 

Hier entsteht gerade ein Plugin, mit dem man im DVBViewer gezielt Diskontinuitäten erzeugen kann (unter Vorgabe der aufeinander folgenden Anzahl TS-Pakete, die im gesamten TS, im Video- oder im Audiostream entfernt werden).

 

Bei ersten Versuchen stellte sich heraus, dass mit der Einstellung "Use DVB Clock" Video und Audio asynchron werden, wenn eine ausreichende Anzahl Audio-Pakete fehlt - ohne die Einstellung passiert das nicht. Wie man auf der Eigenschaftsseite des Audiorenderers -> Erweitert sehen kann, kommt der Renderer durch den zeitweiligen Ausfall von Audio ziemlich aus dem Tritt. Allerdings fängt er sich hier nach einiger Zeit, d.h. die Samplerate stabilisiert sich nahe dem Sollwert, und dann sind Video und Audio auch wieder synchron.

Link to comment

Mit LAV Video habe ich immer noch gröbere Probleme bezüglich Asynchronität. Folgende Szenarien führen bei mir immer zu auseinanderlaufem Audio:

 

-> Dateiübergang bei Seamless Branching BD mit DVBSource (PCR/PTS Sprung, TS Counter Diskontinuität)

-> diverse HD+ Kanäle, hauptsächlich Sport 1 HD, Ursache unbekannt (mit DVB Clock scheint das Problem noch ausgeprägter zu sein)

Link to comment

nev:

LAV uses the frame timestamps from the source to time video and audio. In Audio its important that "Auto A/V Sync" is turned on (default is on), or the audio decoder can run out of sync.

When testing, please use software or DXVA, not QuickSync or CUVID. The last two are more or less blackboxes that may or may not internally behave properly when dropping corrupted frames (especially QS is a bit unreliable there)

 

Link to comment

Bei mir laufen Audio und Video nicht auseinander, selbst wenn mehrere Tausend Video TS-Pakete verloren gehen. Ich habe das im SW-Modus (avcodec) und mit QuickSync getestet. Verwendet habe ich LAV 0.54.1. Audio Dekoder war der AC3Filter.

 

Ich muss bei Gelegenheit meine Async Probleme mit LAV (siehe weiter oben) nochmal genauer analysieren..

 

@Derrick,

 

welche Version von LAV verwendest du? Oder vielleicht liegt es doch am Audio Dekoder bzw. Lücken im Audio PID-Stream?

Link to comment

55.3 aber es hat eigentlich nichts mit LAV zu tun. Es liegt am source filter. Auch mit anderen filtern wird es asynchron wenn der haken bei "Use DVB Clock" im source filter gesetzt ist.

Link to comment

-> Dateiübergang bei Seamless Branching BD mit DVBSource (PCR/PTS Sprung, TS Counter Diskontinuität)

 

Das kann ich mit aktuellen Versionen von LAV nun auch nicht mehr reproduzieren, sprich Audio und Video laufen nach mehreren Dateiübergängen nicht mehr auseinander. Scheinbar hat sich da in letzter Zeit im LAV bzw. QuickSync Dekoder bezüglich Zeitstempelbehandlung etwas getan. Was nach wie vor der Fall ist, ist, dass bei einem m2ts Dateiübergang bei Seamless Branching, wo PTS/PCR einen Sprung machen, das ein oder andere Frame verworfen wird, weil der DVBSource diesen Sprung nicht optimal ausbügeln kann.

 

 

Das Problem mit HD+ werde ich auch nochmal genau durchleuchten...

Link to comment

weil der DVBSource diesen Sprung nicht optimal ausbügeln kann.

..was soll der denn überhaupt ausbügeln? Weniger scheint hier mehr zu sein. Ohne all die haken läuft es besser :D
Link to comment

Bei BD kann es sein, dass es mehrere Hauptfilme mit unterschiedlicher Lauflänge gibt. Diese sind dann stark fragmentiert. Viele m2ts Dateien werden von allen Hauptfilmen verwendet. Dazwischen schieben sich dann aber unterschiedliche Szenen mit unterschiedlichen Lauflängen. PCR/PTS ist also bei Übergängen teilweise nicht kontinuierlich (und auch der TS Continuity Counter nicht). Der DS-Graph würde zum Erliegen kommen, wenn der DVBSource das nicht behandeln würde. Der wiederholt dann beim Erkennen eines Sprungs die letzten Timestamps und rechnet anschließend fortlaufend einen Offset dazu (Sprungweite), wenn ich das richtig verstanden habe. Die Wiederholung der letzten Timestamps ist hier die Ungenauigkeit.

Link to comment

..bei der hardware ist doch immer ein player dabei (vielleicht nicht bei bulk). Der sollte alle BDs ordentlich spielen. Ausserdem ist es ja auch kein DVB ;)

Link to comment

Das ist momentan auch der Grund, wieso ich den DVBSource und somit die DVBViewer BD Playback Engine für BD nicht einsetze. Schade eigentlich, zumal mittlerweile damit sogar HD Audio und PGS-Untertitel funktionieren (das bringt mich gerade darauf, dass ich das Wiki diesbezüglich mal auf Stand bringen sollte). Aber gerade bei 'Illuminati - Angels and Daemons' macht das wenig Spaß. Da setzt sich der Hauptfilm aus den folgenden Teilen zusammen:

00505.m2ts 00:09:06
00506.m2ts 00:02:00
00509.m2ts 00:01:11
00511.m2ts 00:02:29
00512.m2ts 00:01:22
00514.m2ts 00:15:20
00515.m2ts 00:01:07
00517.m2ts 00:00:24
00518.m2ts 00:00:34
00520.m2ts 00:11:28
00521.m2ts 00:00:59
00523.m2ts 00:01:35
00524.m2ts 00:00:36
00526.m2ts 00:14:42
00527.m2ts 00:00:14
05032.m2ts 00:08:51
00530.m2ts 00:00:17
00532.m2ts 00:01:33
00533.m2ts 00:00:40
00535.m2ts 00:01:56
00536.m2ts 00:00:57
00538.m2ts 00:01:19
00539.m2ts 00:01:08
00542.m2ts 00:00:42
00545.m2ts 00:03:45
05033.m2ts 00:00:14
00548.m2ts 00:04:26
00550.m2ts 00:11:22
00551.m2ts 00:00:20
00553.m2ts 00:04:36
00554.m2ts 00:00:46
00556.m2ts 00:19:54
00557.m2ts 00:00:32
00559.m2ts 00:12:19 
Link to comment

Ja, aber damit entfernen wir uns weit vom topic. Ich hätte den titel wohl treffender formulieren sollen ;)

Gemeint ist live-wiedergabe von DVB. BD verwendet m2ts mit 4 zusätzlichen bit als zeitstempel im header. TS ist fortlaufend und springt nicht hin und her. Falls eine gewollte unstetigkeit in der systemzeit auftritt, wird das durch eine ebenfalls gewollte discontinuität angezeigt. Den fall gab es z.b. bei trailerschleifen von paytv bei KD, wenn ich mich richtig erinnere. Das führte zunächst auch zu problemen. Aber nicht mal das ist hier der fall. ;)

Link to comment
  • 2 weeks later...

..update mit neuem LAV 0.56.0, und source filter "use DVB Clock"

 

Keine besserung ! Der ton läuft nach einiger zeit bei HD H.264 bleibend hinterher, wenn ab und zu disconties auftreten.

Link to comment

LAV ist ein prima alleskönner. Darum geht es hier auch nicht, sondern um die zusammenwirkung mit dem DVB Source filter. Ohne haken bei "use DVB Clock" bleibt es synchron trotz discontinuities.

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