J'ai une caméra IP qui donne H264 annexeb Bitstream via les appels SDK. Je veux emballer ce flux vidéo dans un conteneur FLV. Jusqu'à présent, je dois savoir ce qui suit: -h264 annexeb bitstream vers flv bibliothèque mux ffmpeg
Je dois convertir H264 annexb à H264 AVCC: Pour cela, je vais devoir remplacer l'octet d'en-tête NAL (0x00000001) avec la taille de NALU (grand format) .
Ma question est: Qu'est-ce que je fais avec SPS et PPS? devrais-je écrire (av_interleaved_write_frame) comme ils sont après avoir remplacé l'en-tête NAL? ou est-ce que je n'écris pas ces images?
Je lis à propos d'AVCC nécessitant des données supplémentaires. Comment puis-je construire cela? où est-ce que je passe ça?
Je ne suis pas encodez le flux. Je suis juste en train de muxing dans FLV. Je n'ai donc pas "avcodec_open2" dans mon code. ret = avcodec_copy_context (out_stream-> codec, in_stream-> codec); Puis-je simplement affecter des données supplémentaires à extradata-> codec-> extradata? après le contexte de copie? –
Je comprends. Vous n'avez pas besoin d'appeler avcodec_encode_video(), mais vous devriez appeler open_codec2(). Il fait l'initialisation finale du AVCodecContext (analyse l'extradata et initialise les variables internes telles que la résolution). – szatmary
ok je comprends. Une chose que j'ai remarquée est que je reçois SPS périodiquement. Cela signifie-t-il que je devrai à nouveau transmettre des données supplémentaires au CodecContext? i-e open_codec2 encore et encore chaque fois que je reçois SPS? –