Декодирование потока H.264 NALU

Я пытаюсь получить кадр из видеопотока в формате H.264 на Android. У меня есть функция обратного вызова, которая получает (byte[] video, int size), где видео состоит из пакетов NALU, а int «size» кажется размером видео (я регистрировал их и как video.length, так и размер кажется размером 1024). Я использую этот jcodec, чтобы попытаться декодировать кадр:

    ByteBuffer videoBuffer = ByteBuffer.wrap(video);
    H264Decoder decoder = new H264Decoder();
    Picture out = Picture.create(1920, 1088, ColorSpace.YUV420); 
    Picture real = decoder.decodeFrame(videoBuffer, out.getData());
    Bitmap outputImage = AndroidUtil.toBitmap(real);

Однако видео — это не все видео, а пакеты видео. Как мне собрать эти пакеты, чтобы расшифровать их? Как мне изменить код, чтобы получить полный текущий кадр?


person user5382735    schedule 28.09.2015    source источник


Ответы (1)


Вам нужно разобрать каждый наш nalu-сегмент из полезной нагрузки, которую вы получаете. Пожалуйста, смотрите мой предыдущий ответ:

Сбой MediaCodec в потоке высокого качества

person redbrain    schedule 29.09.2015