Como fazer o ffmpeg stream h264 com o PPS e o SPS no fluxo RTP

3

Estou tentando usar o ffmpeg para receber um fluxo h264 sobre o RTSP e encaminhar esse fluxo como um fluxo mtiticast rtp. Eu posso receber o fluxo e gerá-lo como um fluxo de difusão seletiva usando o seguinte comando: ffmpeg -i rtsp://10.255.11.203/ProfileToken_1_1 -vcodec copy -an -f rtp rtp://230.255.10.25:50000

O fluxo de entrada contém pacotes SPS PPS e SEI. Eu não posso fazer o ffmpeg para produzir esses também.

Eu experimentei o parâmetro -flags global_header para ativar e desativar o cabeçalho global, e tentei adicionar -bsf h264_mp4toannexb , o que não funciona, já que o fluxo de entrada já é o Anexo B.

    
por André 11.12.2015 / 10:00

1 resposta

0

O fluxo de entrada os contém ou eles simplesmente não são necessários?

Se você está recebendo o stream via RTSP, provavelmente está recebendo um fluxo RTP que não possui esses pacotes. Seu cliente teria se conectado via RTCP para obter o SDP descrevendo esses fluxos, porque o PPS e o SPS são geralmente uma vez por fluxo, a menos que você esteja alterando resoluções, taxas de quadros, etc.

Execute o comando que você está executando, mas na saída do ffmpeg você verá uma seção como esta:

SDP:
v=0
o=- 0 0 IN IP4 127.0.0.1
s=No Name
c=IN IP4 239.100.200.100
t=0 0
a=tool:libavformat 56.40.101
m=video 10000 RTP/AVP 96
b=AS:3027
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1; sprop-parameter-sets=Z2QAM6xyBEB4AiflwEQAAAMABAAAAwDAPGDGEYA=,aOhDssiw; profile-level-id=640033

Tudo após a linha SDP precisa ser salvo em um filename.sdp. Para se conectar ao fluxo, alguém precisaria abrir o arquivo:

ffplay -i filename.sdp

Se você colocar o arquivo em um servidor, ele poderá abrir o endereço:

ffplay -i http://yourhost/filename.sdp
    
por 23.12.2015 / 21:20