[softhddevice] Audio Video Syncronisation

  • Dann liegt es nicht am Softlimit.


    Mit "15 * 20 * 90" erzwinge ich 15 Videoframes a 20ms Puffer für das Video.
    Das sind ca. 300ms. Damit werden die Videodecoder gefüllt, ohne diesen
    Versatz sind die Videopuffer zuhäufig leer gelaufen. Der Start über die
    Anzahl der Videopuffer hat nicht zuverlässig funktioniert. Was ja bei Aufnahmen
    schnell gegangen wäre.


    Dann müssten aber "0 * 20 * 90" vernünftig funktionieren.


    Ich muß doch noch einbauen, wenn die Videopuffer zu leer sind, der Ton knackst.


    Johns

    Sag mir, wo die Developer sind. Wo sind sie geblieben? . . . . . . . . . . . . . . . . . . . . SoftHdDevice - A software and GPU emulated HD output device plugin.
    Sag mir, wo die Developer sind. Was ist geschehn?


    Client0: Crown CW02 MSI_C847MS-E33 Zotac_GT640_passiv Cine-S2 iMon-MCE / streamdev softhddevice
    Client1: Lian_Li_PC-Q09FB ASRock_H67M-ITX/HT I3-2100 ASUS_ENGT520_passiv / streamdev softhddevice
    Test: Lian_Li_PC-Q09R Asus C60M1-I / streamdev
    Server0: Dockstar TT-S2-3600-USB / streamdev
    Server2: Lian_Li_PC-Q07R Intel_DH61DL G620 WD20EARX 90W PicoPSU Cine-S2+DuoFlex-S2+DuoFlex-CT / streamdev / 22 Watt Verbrauch

  • Dann müssten aber "0 * 20 * 90" vernünftig funktionieren.


    Upps? Da hast du sicher was anderes gemeint.


    Gerald


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470

  • Man hätte auch einfach "0" schreiben können oder ganz weglassen.


    Wenn Ton genau richtig startet, dann sollte auch Video richtig starten.


    Johns

    Sag mir, wo die Developer sind. Wo sind sie geblieben? . . . . . . . . . . . . . . . . . . . . SoftHdDevice - A software and GPU emulated HD output device plugin.
    Sag mir, wo die Developer sind. Was ist geschehn?


    Client0: Crown CW02 MSI_C847MS-E33 Zotac_GT640_passiv Cine-S2 iMon-MCE / streamdev softhddevice
    Client1: Lian_Li_PC-Q09FB ASRock_H67M-ITX/HT I3-2100 ASUS_ENGT520_passiv / streamdev softhddevice
    Test: Lian_Li_PC-Q09R Asus C60M1-I / streamdev
    Server0: Dockstar TT-S2-3600-USB / streamdev
    Server2: Lian_Li_PC-Q07R Intel_DH61DL G620 WD20EARX 90W PicoPSU Cine-S2+DuoFlex-S2+DuoFlex-CT / streamdev / 22 Watt Verbrauch

  • Man hätte auch einfach "0" schreiben können oder ganz weglassen.


    Ach so, das hatte mich verwirrt, sorry,


    Gerald


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470

  • Nein, 0 * 20 * 90 war das erste, was ich ausprobiert hatte, aber auch damit gibt es die Zeitlupenphase.
    Wenn du gegen Zeitlupenruckeln unempfindlich bist, brauchst du nur eine Aufnahme mit einer kontinuierlichen Bewegung, wie z.B. ein Blick aus einem fahrenden Zug. Da wird das sehr deutlich.
    Ich habe vor allem 720p und 576i Aufnahmen von ÖR Sendern, falls das eine Rolle spielt.

  • Das verstehe ich nicht, man müsste mit 0 Video und Audio im Sync haben.
    Mir ist aufgefallen das bei einigen (fast allen) Sendern die Audio Daten vor
    den Video Daten kommen. Damit ich dann Video sofort losläuft, überspringe
    ich diese Audiodaten.


    Mit -DDEBUG sollte eigentlich alle wichtigen Informationen im Syslog stehen.


    Um Wiedergabe zuerkennen:


    int Poll(int timeout) wird nur bei Aufnahmen und DVD Wiedergabe aufgerufen.
    Dort setze ich bereits das Flag "VideoClearClose", damit bei der Wiedergabe
    die Sprünge nicht nachlaufen.


    Das könntest du verwenden. (Mußt es natürlich erstmal global verfügbar machen).


    Johns

    Sag mir, wo die Developer sind. Wo sind sie geblieben? . . . . . . . . . . . . . . . . . . . . SoftHdDevice - A software and GPU emulated HD output device plugin.
    Sag mir, wo die Developer sind. Was ist geschehn?


    Client0: Crown CW02 MSI_C847MS-E33 Zotac_GT640_passiv Cine-S2 iMon-MCE / streamdev softhddevice
    Client1: Lian_Li_PC-Q09FB ASRock_H67M-ITX/HT I3-2100 ASUS_ENGT520_passiv / streamdev softhddevice
    Test: Lian_Li_PC-Q09R Asus C60M1-I / streamdev
    Server0: Dockstar TT-S2-3600-USB / streamdev
    Server2: Lian_Li_PC-Q07R Intel_DH61DL G620 WD20EARX 90W PicoPSU Cine-S2+DuoFlex-S2+DuoFlex-CT / streamdev / 22 Watt Verbrauch

  • Ja, ich verstehe es auch nicht, ich hatte den Wert mit Versuch und Irrtum soweit erhöht wie nötig, damit er schön springt.
    Die Infos von –DDEBUG hatten mir dabei nicht zum Verständnis geholfen.


    Danke für den Tipp!!
    Es tut jetzt so, wie es soll:


    Sobald ich Zeit habe, werde ich das mal im Produktivbetrieb testen.


    Vielleicht schaue ich mir dann auch mal die speed up/slow down Geschichte an, diese paarweisen Meldungen hatte ich bei meinen letzten Tests oft gesehen, ohne dass ich eine Sinn darin erkennen kann.

  • Bei den speed up / slow down Messages siehe: [Softhddevice] cant'render mixer: An invalid handle value was provided


    gibts auch einen Patch im Thread.


    Ich habe ein Audio/Video Sync Fenster von -15 - 45ms = 60ms.
    Scheinbar gibt es in der Verarbeitungskette doch größere Schankungen.


    Meine Vermutung ist immer noch, daß wenn der Wert Y in "XX+Y v-buf" schwankt,
    ein Rechenfehler vorliegt. Schwankungen von Y sollten den A/V Sync nicht verändern.


    Johns

    Sag mir, wo die Developer sind. Wo sind sie geblieben? . . . . . . . . . . . . . . . . . . . . SoftHdDevice - A software and GPU emulated HD output device plugin.
    Sag mir, wo die Developer sind. Was ist geschehn?


    Client0: Crown CW02 MSI_C847MS-E33 Zotac_GT640_passiv Cine-S2 iMon-MCE / streamdev softhddevice
    Client1: Lian_Li_PC-Q09FB ASRock_H67M-ITX/HT I3-2100 ASUS_ENGT520_passiv / streamdev softhddevice
    Test: Lian_Li_PC-Q09R Asus C60M1-I / streamdev
    Server0: Dockstar TT-S2-3600-USB / streamdev
    Server2: Lian_Li_PC-Q07R Intel_DH61DL G620 WD20EARX 90W PicoPSU Cine-S2+DuoFlex-S2+DuoFlex-CT / streamdev / 22 Watt Verbrauch

  • Stimmt, warum hat der dann funktioniert?


    s/15 * 90/35 * 90/
    s/45 * 90/65 * 90/


    in video.c ergibt 40ms größeres Zeitfenster. Je nach A/V Sync Vorlieben auch nur eins oder größere Werte.


    Johns

    Sag mir, wo die Developer sind. Wo sind sie geblieben? . . . . . . . . . . . . . . . . . . . . SoftHdDevice - A software and GPU emulated HD output device plugin.
    Sag mir, wo die Developer sind. Was ist geschehn?


    Client0: Crown CW02 MSI_C847MS-E33 Zotac_GT640_passiv Cine-S2 iMon-MCE / streamdev softhddevice
    Client1: Lian_Li_PC-Q09FB ASRock_H67M-ITX/HT I3-2100 ASUS_ENGT520_passiv / streamdev softhddevice
    Test: Lian_Li_PC-Q09R Asus C60M1-I / streamdev
    Server0: Dockstar TT-S2-3600-USB / streamdev
    Server2: Lian_Li_PC-Q07R Intel_DH61DL G620 WD20EARX 90W PicoPSU Cine-S2+DuoFlex-S2+DuoFlex-CT / streamdev / 22 Watt Verbrauch

  • @ johns:


    ich habe hier eine durchgehende, ungeschnittene Aufzeichnung auf Platte, die zwei Sendungen (deutschspachige Reportagen, keine Synchronisation) enthält. Das erste ist leicht asynchron, und zwar sowohl beim Stereo- als auch ac3-Ton. Bei der anschließenden zweiten Sendung stimmt dann die Synchronität wieder. Ich glaube allerdings nicht, dass die erste Sendung tatsächlich so asynchron ausgestrahlt wurde.


    Das ist kein grundsätzliches Problem von softhddevice, denn mit dem xine-Plugin hatte ich sowas früher auch. Manche Sendungen waren aufs Verrecken nicht synchron abspielbar.
    Was machen kommerzielle Geräte da anders, die dieses Problem nicht haben?

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

  • @ johns:


    ich habe hier eine durchgehende, ungeschnittene Aufzeichnung auf Platte, die zwei Sendungen (deutschspachige Reportagen, keine Synchronisation) enthält. Das erste ist leicht asynchron, und zwar sowohl beim Stereo- als auch ac3-Ton. Bei der anschließenden zweiten Sendung stimmt dann die Synchronität wieder. Ich glaube allerdings nicht, dass die erste Sendung tatsächlich so asynchron ausgestrahlt wurde.


    Das ist kein grundsätzliches Problem von softhddevice, denn mit dem xine-Plugin hatte ich sowas früher auch. Manche Sendungen waren aufs Verrecken nicht synchron abspielbar.
    Was machen kommerzielle Geräte da anders, die dieses Problem nicht haben?


    Das Problem geht schon damit los, daß ffmpeg/libav überhaupt keine gescheiten Timestamps (Zeitstempel) liefert.
    Siehe AV_INFO: "/\ 240ms". Hier schwanken die Timestamps schon 240ms. Habe auch schon Logs mit 540ms gesehen.


    Wobei bei den 720p Sendern diese nicht vorhanden sind.


    Schau mal ins Log ob dir bei den AV_INFO Ausgaben etwas auffällt.
    Wobei natürlich Stereo und AC-3 verschiedene Verzögerungen benötigen können.
    Sollte dies identisch sein. Dann könnte die Verzögerung generell schon etwas danebenliegen
    und nur bei der einen Sendung verstärkt auffallen.
    Und dann gibts immer die lieben Sender, die schon sowas einfaches kaputt bekommen.


    Johns

    Sag mir, wo die Developer sind. Wo sind sie geblieben? . . . . . . . . . . . . . . . . . . . . SoftHdDevice - A software and GPU emulated HD output device plugin.
    Sag mir, wo die Developer sind. Was ist geschehn?


    Client0: Crown CW02 MSI_C847MS-E33 Zotac_GT640_passiv Cine-S2 iMon-MCE / streamdev softhddevice
    Client1: Lian_Li_PC-Q09FB ASRock_H67M-ITX/HT I3-2100 ASUS_ENGT520_passiv / streamdev softhddevice
    Test: Lian_Li_PC-Q09R Asus C60M1-I / streamdev
    Server0: Dockstar TT-S2-3600-USB / streamdev
    Server2: Lian_Li_PC-Q07R Intel_DH61DL G620 WD20EARX 90W PicoPSU Cine-S2+DuoFlex-S2+DuoFlex-CT / streamdev / 22 Watt Verbrauch

  • Soweit ich das schon sagen kann, ist es mit dem von -15/45 auf -35/65 vergrösserten Regelinterval deutlich besser!


    Diese Regelschleife sollte es gar nicht geben.
    Wenn der Bereich verlassen wird, dann sollte sich nur eine Veränderung um 20ms (50hz) ergeben.
    Und selbst wenn es jetzt 1 Frame (20ms) irgendwo hängen bleibt sollte noch genug Reserve vorhanden sein.


    Johns

    Sag mir, wo die Developer sind. Wo sind sie geblieben? . . . . . . . . . . . . . . . . . . . . SoftHdDevice - A software and GPU emulated HD output device plugin.
    Sag mir, wo die Developer sind. Was ist geschehn?


    Client0: Crown CW02 MSI_C847MS-E33 Zotac_GT640_passiv Cine-S2 iMon-MCE / streamdev softhddevice
    Client1: Lian_Li_PC-Q09FB ASRock_H67M-ITX/HT I3-2100 ASUS_ENGT520_passiv / streamdev softhddevice
    Test: Lian_Li_PC-Q09R Asus C60M1-I / streamdev
    Server0: Dockstar TT-S2-3600-USB / streamdev
    Server2: Lian_Li_PC-Q07R Intel_DH61DL G620 WD20EARX 90W PicoPSU Cine-S2+DuoFlex-S2+DuoFlex-CT / streamdev / 22 Watt Verbrauch

  • Zitat

    Schau mal ins Log ob dir bei den AV_INFO Ausgaben etwas auffällt.
    Wobei natürlich Stereo und AC-3 verschiedene Verzögerungen benötigen können.
    Sollte dies identisch sein. Dann könnte die Verzögerung generell schon etwas danebenliegen
    und nur bei der einen Sendung verstärkt auffallen.
    Und dann gibts immer die lieben Sender, die schon sowas einfaches kaputt bekommen.


    das sieht völlig normal aus:



    wenn ich diese Sendung durch Project X jage, wird dort festgestellt:



    32ms ist nicht viel, und es wundert mich, dass ich das überhaupt so deutlich wahrgenommnen habe. Es gibt hier aber einen Unterschied zur nächsten Sendung in gleichem ts-Aufnahmefile, die lippensynchron war:
    Man beachte, dass hier "inserted" wurde.


    Bei der lippensynchron abgespielten 2. Sendung ist die Differenz viel größer, jedoch werden hier die Frames am Ende angefügt ('added'):


    Zitat


    Das Problem geht schon damit los, daß ffmpeg/libav überhaupt keine gescheiten Timestamps (Zeitstempel) liefert.


    ist das den Entwicklern bekannt bzw. gibt es einen offenen Bugreport?

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

  • In deinem Log sind keine AV_INFO Einträge:


    Code
    Dec 26 02:25:27 i3-530 vdr: video: 20:29:03.042  +31 1123   0/\ms  85+6 v-buf
    Dec 26 02:26:27 i3-530 vdr: video: slow down video, duping frame
    Dec 26 02:26:27 i3-530 vdr: video: 20:30:03.022  +11 1091   0/\ms  77+7 v-buf


    Die +31 bzw +11 sind der aktuelle A/V Abstand,
    Die +6 v-buf bzw. +7 v-buf sind die aktuelle Anzahl der Videoframes im Ausgabepuffer.
    Bei unterschiedlichen Frames, könnte der A/V Abstand nicht passen.
    Siehe oben, dort wird eine Frame verdoppelt obwohl es nicht nötig ist.


    Was Project X da repariert ist der Abstand von Video + Audio im Stream.
    Dies gleiche ich durch Video und Audio Puffer aus und halte so einen "konstanten"
    Ton-Bild Abstand.


    Intressant ist, daß dies scheinbar schon so vom Sender kommt.
    Ich habe mich schon über vereinzelte Tonaussetzer gewundert.



    Zitat


    ist das den Entwicklern bekannt bzw. gibt es einen offenen Bugreport?


    Ich habe es aktuell nicht verfolgt, aber in der Vergangenheit gab es hier
    viele Veränderungen.


    FFmpeg unterstützt best_effort_timestamp welche vielleicht ein gutes
    Ergebnis liefern. Nur wurde dies nicht von libav unterstützt und ich
    habe es deshalb nicht verwendet.


    Wie man es aktuell am Besten verwendet sieht man im ffplay Code.


    Im obigen Log siehst du "0/\ms", was bedeutet das die PTS 0 ms schwanken
    und somit hier keine Fehlerquelle vorhanden sein kann.


    Johns

    Sag mir, wo die Developer sind. Wo sind sie geblieben? . . . . . . . . . . . . . . . . . . . . SoftHdDevice - A software and GPU emulated HD output device plugin.
    Sag mir, wo die Developer sind. Was ist geschehn?


    Client0: Crown CW02 MSI_C847MS-E33 Zotac_GT640_passiv Cine-S2 iMon-MCE / streamdev softhddevice
    Client1: Lian_Li_PC-Q09FB ASRock_H67M-ITX/HT I3-2100 ASUS_ENGT520_passiv / streamdev softhddevice
    Test: Lian_Li_PC-Q09R Asus C60M1-I / streamdev
    Server0: Dockstar TT-S2-3600-USB / streamdev
    Server2: Lian_Li_PC-Q07R Intel_DH61DL G620 WD20EARX 90W PicoPSU Cine-S2+DuoFlex-S2+DuoFlex-CT / streamdev / 22 Watt Verbrauch

  • In deinem Log sind keine AV_INFO Einträge


    hätte ich dazu noch irgendeine Option aktivieren müssen, oder zeigt das Fehlen, dass das Plugin nichts zum Loggen gefunden hat? Die von Dir geposteten Infomeldungen kenne ich ansonsten; bei Live-TV sind sie auch präsent. Nicht aber beim Abspielen dieser Aufnahme.



    Zitat

    Was Project X da repariert ist der Abstand von Video + Audio im Stream.
    Dies gleiche ich durch Video und Audio Puffer aus und halte so einen "konstanten"
    Ton-Bild Abstand.


    wenn ich es richtig verstehe, ist der Puffer aber ein fixer Wert, während der Abstand aber variabel ist und vom Sender bzw. der einzelnen Sendung abhängt:

    Zitat

    Intressant ist, daß dies scheinbar schon so vom Sender kommt.
    Ich habe mich schon über vereinzelte Tonaussetzer gewundert.


    Siehst Du denn keine Möglichkeit, sowas im Plugin zu erkennen und zu berücksichtigen?

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

  • Nur wurde dies nicht von libav unterstützt und ich
    habe es deshalb nicht verwendet.


    Du könntest den Support für libav entfernen und allen Ubuntu-Leuten die Empfehlung von FFmpeg weitergeben. Und zwar soll diese Repo Abhilfe schaffen https://launchpad.net/~jon-severinsson/+archive/ffmpeg


    Siehe auch: http://ffmpeg.org/download.html

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!