У меня есть IP-камера, которая дает H264 приложению Bitstream через вызовы SDK. Я хочу упаковать этот видеопоток в контейнер FLV. До сих пор я должен был знать следующее: -h264 applicationb bitstream to flv mux ffmpeg library
Мне нужно преобразовать H264 в приложение H264 AVCC: Для этого мне придется заменить байт заголовка NAL (0x00000001) на размер NALU (формат большого конца) ,
Мой вопрос: что мне делать с SPS и PPS? следует ли писать (av_interleaved_write_frame) их, как после замены заголовка NAL? или вообще не писать эти кадры?
Я читал о AVCC, требующем дополнительных данных. Как это построить? где я это передаю?
Я не повторное кодирование потока. Я просто перемещаю его в FLV. Поэтому у меня нет «avcodec_open2» в моем коде. ret = avcodec_copy_context (out_stream-> codec, in_stream-> codec); Могу ли я просто назначить дополнительные данные для outstream-> codec-> extradata? после контекста копирования? –
Я понимаю. Вам не нужно вызывать avcodec_encode_video(), но вы должны позвонить open_codec2(). Он выполняет окончательную инициализацию AVCodecContext (анализирует extradata и инициализирует внутренние переменные, такие как разрешение). – szatmary
ОК я понимаю. Одна вещь, которую я заметил, это то, что я периодически получаю SPS. Означает ли это, что мне понадобится снова передать дополнительные данные в CodecContext снова? i-e open_codec2 снова и снова, когда я получаю SPS? –