Uso l'API di FFMpeg per codificare le immagini sullo stream H.264, il codice è come questo encode code. Quando ho chiamato la funzione avcodec_encode_video2
ho ricevuto i dati di un AVPacket, quindi l'ho salvato su file. Io uso diverse immagini per ottenere diversi file per il test. In base al codice di avviamento 00 00 00 01
o 00 00 01
, ho trovato che i dati del 1 ° e del 2 ° file contengono diversi U2 NAL U.264. Ma partendo dal terzo file, non riesco a trovare il codice di avviamento. Come l'immagine seguita. Qual è la relazione tra AVPacket in FFMpeg e H.264 NAL Uint?
Mi sento confuso. Base sul codice FFMpeg Penso che i dati di un AVPacket debbano contenere almeno un UAL NAL, ma il risultato è inaspettato. Ciò significa che un NAL Uint può essere diviso in due dati di AVPackets? Qual è la relazione tra AVPacket e H.264 NAL Uint?
Puoi mostrare il tuo codice? Sospetto che la tua chiamata di codifica non abbia effettivamente restituito un pacchetto (got_packet_ptr == 0) o qualcosa del genere. –
Da [FFmpeg doxygen] (http://ffmpeg.org/doxygen/trunk/group__lavc__encoding.html#gaa2dc9e9ea2567ebb2801a08153c7306b) su 'avcodec_encode_video2': * Prende i dati di input video grezzi dal frame e scrive il successivo pacchetto di output, se disponibile, in avpkt . Il pacchetto di output ** non contiene necessariamente i dati per il fotogramma più recente **, poiché gli encoder possono ritardare e riordinare i fotogrammi di input internamente secondo necessità. * Probabilmente è diviso. Puoi concatenare i dati e inviarli al decoder per vedere se si lamenta o no? – incBrain
@ RonaldS.Bultje Effettuo il debug del mio programma, il 'got_output' è effettivamente vero ogni volta. – Ello