Ich versuche auch, die -pat_period zu ändern. Ich war bisher jedoch nicht erfolgreich. Möchte aber gerne meine Forschung teilen. Ich habe die Quelldatei von mpegtsenc.c eingecheckt. Der folgende Code erklärt, wie es funktioniert, wie unten gezeigt: Hinweis: Dies ist ein Hinweis auf den Code.
if (ts->mux_rate > 1) { service->pcr_packet_period = (ts->mux_rate * PCR_RETRANS_TIME) (TS_PACKET_SIZE * 8 * 1000); ts->sdt_packet_period = (ts->mux_rate * SDT_RETRANS_TIME) (TS_PACKET_SIZE * 8 * 1000); ts->pat_packet_period = (ts->mux_rate * PAT_RETRANS_TIME) (TS_PACKET_SIZE * 8 * 1000);
Definiere Werte wie folgt:
#define SDT_RETRANS_TIME 500 #define PAT_RETRANS_TIME 100 #define PCR_RETRANS_TIME 20 #define TS_PACKET_SIZE 188
Wenn Sie die Werte berechnen, erhalten Sie den korrekten pcr-Wert gemäß dem Ausdruck. In diesem Beispiel habe ich 7-Werte für -pat_period, -sdt_period, -pcr_period und Muxrate 6500000 angegeben. Sie erhalten einen Wert für die PCR. Den Wert, den Sie für SDT oder PAT versuchen, überträgt er jedoch nach jeweils 2147483647 pkts.
Beispiel für die PCR
6500000 * 7/188 * 8 * 1000 = 45500000/1504000 = 30.25265957446809
Wie Sie sehen, zeigt die Debug-Zeile von ffmpeg, dass die PCR nach jeweils 30 pkts übertragen wird. Dies ist bei SDT / PAT jedoch nicht der Fall.
> [mpegts @ 0x22862c0] muxrate 6500000, pcr every 30 pkts, sdt every > 2147483647, pat/pmt every 2147483647 pkts
Für PAT / SDT sollten wir einen ähnlichen Wert haben, der tatsächliche Wert ist jedoch anders als erwartet. Ich arbeite immer noch daran. Ich dachte an meine Erkenntnisse. Ich würde es begrüßen, wenn Experten helfen können.
Ich würde gerne wissen, ob Sie vorschlagen können, wie Sie 78 für PAT erreicht haben? Wie haben Sie überprüft, dass es nach 78 pkts ist?
Problemumgehung sind:
1) Sie können den gewünschten Wert im Quellcode definieren, kompilieren und so lange testen, bis Sie ein Ergebnis erhalten. 2) Erhöhen Sie die Muxrate, es sei denn, Sie erhalten das gewünschte Ergebnis, es kostet jedoch viel Bandbreitenverbrauch. Durch Erhöhen wird die Anzahl der Pakete verringert, nach denen PAT gesendet werden soll
Update: Mein schlechtes Nein, es macht keinen Unterschied zu TS. Eigentlich erhöht es sich auf PAT / PMT auf 483 ms, was einen Höchstwert von 500 ms erreicht und einen Alarm im Analysegerät erzeugt.