come ridurre le dimensioni dell'unità NAL dell'allegato B dell'h264 per evitare la frammentazione IP?


1

Sto cercando di riprodurre un video in streaming su un terminale utilizzando RTP. Il video è codificato in h.246. Sto usando ffmpeg per estrarre il flusso di byte secondo l'allegato B h.264:

ffmpeg -i test.h264 -vcodec copy -vbsf h264_mp4toannexb -an out.h264 

Funziona bene, ma alcune unità NAL sono più grandi della MTU di rete e quindi ottengono frammentato da IP quando viene inviato al terminale. Il terminale sembra un po 'pigro e scarta datagrammi frammentati rendendo la riproduzione video terribile.

Quindi in pratica ho bisogno di un modo per ridurre le dimensioni dell'unità NAL, qualche idea?


la dimensione di NAL è decidec per encoder al momento della codifica, nulla può essere fatto a livello di bitstream. solo la soluzione sembra ricodificare.
rajneesh

@ Rajesh grazie per il tuo commento. L'ho fatto. Ho decodificato il video in raw e poi lo ho ricodificato come h246, ma ottengo comunque questi enormi (circa 3kb) frame SPS che non riesco a ridurre.
Nicolas Emiliani

abilitare più slice, ciascuna slice può quindi essere inserita in un'unità NAL separata. È possibile scegliere il numero di slice per immagine in base alla dimensione dell'immagine, bitrate.
rajneesh

@rajneesh Ho cercato di fare ciò che mi hai suggerito senza fortuna, sto usando x264 per la codifica, ma ottengo comunque enormi SPS ... questa è la linea che sto provando: $ x264 --profile baseline - input-res 352x288 --slices 8 --slice-max-size 1200 -o test.h264 --fps 15 --bitrate 90 video.yuv
Nicolas Emiliani
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.