Detailfragen zu Transport-Streams

  • Zitat

    Ja das habe ich auch verstanden, dass mit 100ms nicht gemeint ist das es genau 100 ms also, dass in 100 ms ein mal.


    Noch etwas genauer:
    Der Abstand zwischen zwei Einträgen muss <= 100ms sein. ;)

    Zitat

    Aber ich wollte auch wissen, wenn ich ps zu ts umwandele woran ich erkennen muss wann ich meine PAT und PMT wiederholen muss.


    Wenn der Abstand zum Letzten zu groß zu drohen wird,..

  • Hast du schon herausgefunden, wie viele Millisekunden lang ein Video-Frame (abhängig von der Framerate) zu sehen bzw. ein MP2-Frame oder AC3-Frame zu hören ist?

    Und daraus gefolgert - wie viele komplette Videoframes man innerhalb von 100 ms höchstens zu sehen, bzw. wie viele komplette Audioframes (je nach Format) man innerhalb von 100 ms höchstens zu hören bekommt?

  • Hallo,
    nee habe ich leider noch nicht. Mich beschäftigt momentan, wie ich PCR berechnen muss ich dachte ich kann die SCR aus dem Packed Header von VOB übernehmen aber leider geht das nicht so. Mein Problem ist ich weiss nicht wie STC ist also ib TS

  • Zitat


    Wenn der Abstand zum Letzten zu groß zu drohen wird,..

    woher weiss ich das der Abstabd zu groß wird ich habe ja keine Uhr oder habe ich noch nicht gefunden

  • Bei einem X fps Clip kommt ja alle y = (1000/x) ms ein neues Frame, wenn man jetzt einen Eintrag getätigt hat weiß man, dass man nach z = (100ms/y) (abgerundet!) Frames wieder einen Eintrag machen muss.
    Beispiel:
    Clip hat 25fps
    -> y = 1000/25 ms = 40 ms
    -> z = 100ms/40ms = 2,5 (= 2 abgerundet)
    -> Hat man also einen Eintrag gemacht, macht man beim nächsten Frame keinen nd beim übernächsten wieder einen usw. (bei 25fps würde man also effektiv alle 80ms einen Eintrag machen)
    Würde man erst beim überübernächsten Frame einen Eintrag machen wäre der Abstand ja 40ms*3 = 120ms und somit größer als 100ms,.....
    (gekürzt kann man auch sagen bei x fps macht macht man alle x/10 (abgerundet) Frames einen Eintrag)

    Cu Selur

    Ps.: gibt sicher auch Muxer die einfach jedes Frame einen Eintrag machen.

  • Nun ja, von einem Programmierer würde ich schon erwarten, dass ein gewisses Verständnis für Verhältnisgleichungen, physikalische Größen und Kopfrechnen vorhanden ist.

    Dass von "25 Frames pro Sekunde" nicht auf "40 Millisekunden pro Frame" geschlossen werden kann, ist für mich doch etwas ... überraschend.

    Und bei einem ordentlichen Multiplexer, der sowohl verschiedene Streams als auch System-Pakete in einem korrekten Verhältnis mischen muss, sind sicher noch viel mehr Details zu beachten. Ich stelle mir nur vor, dass es durchaus legitim sein kann, nach der Hälfte eines Videoframes bereits Audioframes zu übermitteln, denn wer sagt denn, dass die Pakete eines Videoframes am Stück aufeinanderfolgen müssen? Ein korrekter Demultiplexer würde das nicht erfordern.

  • Also, danke erstmal. Ich möchte nichts aus Frames oder mit Frames ausrechnen. Es geht mir nur um Konvertieren von PS in Ts und alle diese Informationen müssen ja schon in PS enthalten sein. Also muss ich nicht die Frames und alles was damit zu tun hat verstehen ich suche einfach die Informationen in Ps meine Frage ist eigentlich wie man aus SCR oder PTS oder DTS den PCR ausrechnet und das ht mit Frames nichts zu tun. Ich möchte nicht das Rad neue erfinden sondern die enthaltene Infos benutzen.
    Also einfacher erklärt wenn man Doller in Euro wechselt muss man ja nicht die Herstlleungsstoffe von Doller oder Euro kennen. Es reicht wenn man den Wechselkurs kennt und den Betrag, den man wechseln möchte.
    Mein Problem ist ich weiss nicht wo de Betrag in Porgram Stream steht also Betrag = (SCR/PTS oder DTS) und ich kenne den Wechselkurs auch nicht ALSO wie ich aus PCR = Wechselkurs * Betrag.

    Einmal editiert, zuletzt von borhan (21. November 2009 um 14:55)

  • PCR_base(i) = [(system_clock_frequency x t(i)) DIV 300] MOD 233

    Kann mir vielleicht jemand sagen, was hier t(i) ist, oder noch besser wie ich es ausrechnen kann? Würde mir viel helfen! In der Erklärung steht
    "The time t(i) at which the i-th byte enters
    the T-STD is defined by decoding the program clock reference (PCR) fields in the input stream, encoded in the Transport
    Stream packet adaptation field of the program to be decoded and by counting the bytes in the complete Transport Stream
    between successive PCRs of that program."
    Also um welchen Byte geht es hier und wie rechne ich die time aus

  • ... Mein Problem ist ich weiss nicht wo de Betrag in Porgram Stream steht also Betrag = (SCR/PTS oder DTS) ...


    SCR
    Die System Clock Reference ist im Paket Header enthalten. Nach den 4 Byte Pack Start Header ($000001BA) folgen 4 Bit 0010 als ID für MPEG-1 oder 2 Bit 01 für MPEG-2. Daran schließt sich die SCR an. Bei MPEG-1 sind das 33 Bit, welche von drei Markerbits unterbrochen werden. Bei MPEG-2 sind das 33 Bit Base, 9 Bit Extension und vier Markerbits.

    PTS
    Der Presentation Time Stamp ist in Video ($000001E*), Audio ($000001C*) und Private ($000001B*) Headern enthalten. Im vierten Byte nach dem Startcode ist das erste Bit das Flag dafür, ob im Header ein PTS enthalten ist. Wenn ja, kommen 5 Byte mit Flags, dem PTS und Markerbits.

    DTS
    Der Decoding Time Stamp ist ebenfalls in Video ($000001E*), Audio ($000001C*) und Private ($000001B*) Headern enthalten. Im vierten Byte nach dem Startcode ist das zweite Bit das Flag dafür, ob im Header ein DTS enthalten ist. Ein DTS setzt einen PTS voraus. Wenn ja, kommen 10 Byte mit Flags, dem PTS, dem DTS und Markerbits.

    Meine Homepage kennst Du ja. Dort kannst Du es Dir genauer ansehen und auch Demosourcen in Delphi herunterladen.

    PCR_base(i) = [(system_clock_frequency x t(i)) DIV 300] MOD 233

    Kann mir vielleicht jemand sagen, was hier t(i) ist, oder noch besser wie ich es ausrechnen kann? Würde mir viel helfen! In der Erklärung steht
    "The time t(i) at which the i-th byte enters
    the T-STD is defined by decoding the program clock reference (PCR) fields in the input stream, encoded in the Transport
    Stream packet adaptation field of the program to be decoded and by counting the bytes in the complete Transport Stream
    between successive PCRs of that program."


    Wo hast Du das her?

    Gruß Frank

    2 Mal editiert, zuletzt von Fr_An (23. November 2009 um 12:35)

  • Hallo zusammen,
    nee ich habe es nicht aus PorjectX sonder aus ISO/IEC
    13818-1 INTERNATIONAL
    STANDARD. Wo ich DTS SCR PTS finde weiss ich. ICh weiss aber leider nicht, wie ich aus diesen ANgaben PCR ausrechne das mein Hauptproblem Momentan

  • Hallo,
    wenn ich alls PES habe und nun diese zu ts zusammen binden möchte. Wie berechne ich den PCR muss doch gehen es muss doch eigentlichegal sein, dass ich es aus einem Vob gewonnen habe

  • Hallo kann mir jemand vielleicht was genau I-Frames PTS ist. ISt das das gleiche wie die PTS von dem hier die ganze Zeit die rede ist.
    und noch eine frage
    wie erkenne ich den anfang einer gop

  • Ich fürchte, hier in unserem Board gibt es wohl zu wenige Nutzer, die wirklich schon etwas rund um den Transport-Stream programmiert haben. Du merkst ja, wie die Antworten ausbleiben - und ich gehe davon aus, dass es am Wissen unserer Mitglieder liegt.

    Mein bester Vorschlag dazu wäre wohl, es im englischen doom9-Forum zu versuchen. Am besten mit einer ganzen Sammlung der noch offenen Fragen auf einmal. Wenn man es dort nicht im Detail erklären kann, dann wird man wenigstens wissen, wo es gut erklärt ist, hoffe ich (wenn auch sicher in englisch).

  • Hi,
    ich bin wieder da. Meine Fage:
    Wie erkenne ich, dass in einem PES jetzt ein Frame kommt?
    Also mein Ziel ist es die Frames zu zählen und dadurch die Zeit auszurechnen

  • Danke Frank,
    ich brauche noch zusätzlich den bit rate. Ist die Bitrate fest oder gibt es in der PES noch eine genaue angabe. Im VOB Header gibt es eine Angabe im Byte11,12und bit aus Byte 13.

  • Im Videostream wird lediglich eine (im Encoder mal eingestellte) maximale oder durchschnittliche Bitrate hinterlegt. Aber ansonsten hat MPEG2-Video eigentlich immer eine variable Bitrate, und die momentane Bitrate der aktuellen GOP steht nirgendwo!

Jetzt mitmachen!

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