Eu também estou tentando mudar o -pat_period. No entanto eu tenho sido mal sucedida até agora. Mas gostaria de compartilhar minha pesquisa. Eu verifiquei no arquivo fonte do mpegtsenc.c seguinte código explica como funciona como mostrado abaixo: Observe que isto é para referência ao código.
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);
definir valores são os seguintes:
#define SDT_RETRANS_TIME 500
#define PAT_RETRANS_TIME 100
#define PCR_RETRANS_TIME 20
#define TS_PACKET_SIZE 188
se você calcular os valores, você obterá o valor de pcr correto de acordo com a expressão. Neste exemplo forneceu o valor 7 para -pat_period, -sdt_period, -pcr_period e muxrate 6500000. Você obtém valor para PCR, mas qualquer valor que você tente para SDT ou PAT ele transmite após cada 2147483647 pacotes.
Exemplo de PCR
6500000 * 7 / 188 * 8 * 1000 = 45500000 / 1504000 = 30.25265957446809
Como você pode ver, a linha de depuração do ffmpeg mostra que o PCR é transmitido após 30 pacotes. Mas este não é o caso da SDT / PAT.
> [mpegts @ 0x22862c0] muxrate 6500000, pcr every 30 pkts, sdt every
> 2147483647, pat/pmt every 2147483647 pkts
Para o PAT / SDT, devemos ter um valor semelhante, mas o valor real é diferente, não o esperado.
Eu ainda estou trabalhando nisso. Pensei em compartilhar minhas descobertas. Eu apreciarei se os especialistas puderem ajudar.
Também gostaria de saber se você pode sugerir como você alcançou 78 para o PAT? Como você verificou que é depois de cada 78 pacotes?
A solução alternativa é:
1) Você pode definir o valor desejado no código-fonte, compilar e continuar testando até obter o resultado.
2) Aumente o muxrate a menos que obtenha o resultado desejado, mas isso custa muito consumo de largura de banda. o aumento reduzirá o número de pacotes após o qual o PAT será transmitido
Atualização:
Meu mal não, não faz qualquer diferença para TS, na verdade, aumenta para PAT / PMT duração para 483ms que picos acima de 500ms e gera alarme no analisador.