2014-01-16 6 views
3

Я пытаюсь декодировать необработанный протокол H264 с камеры, но у меня возникают некоторые проблемы с использованием Jcodec H264Decoder. Я получаю массив целых чисел с информацией из камеры. Ниже выборки данных:Декодирование H264 из массива целых чисел

массив: 00 00 01 00 00 FD 14 69 00 00 00 01 61 80 6F Е4 D3 5B 76 97 DF 04 3A EF 54 97 0E D9 F5, ... подробнее

код я использую:

ByteBuffer bb = ByteBuffer.wrap(Utils.intArrayToByteArray(array, arraySize)); 
bb.rewind(); 
// Create a buffer to hold the output picture which is big enough 
Picture outBuffer = Picture.create(1920, 1088, ColorSpace.YUV420); 
Picture pic = _decoder.decodeFrame(bb, outBuffer.getData()); 
BufferedImage bufferedImage = JCodecUtil.toBufferedImage(pic); 

Когда я пытаюсь запустить его, я получаю NullPointerException следующим образом:

Исключение в поток "Thread-6" java.lang.NullPointerException в org.jcodec .codecs.h264.H264Decoder $ FrameDecoder.decodeFrame (H264Decoder.java:82) в org.jcodec.codecs.h264.H264Decoder.decodeFrame (H264Decoder.java:61) at br.com.grupogiga.security.xm.player.jcodec.JCodecPlayer.test_readNals (JCodecPlayer.java:122) at br. com.grupogiga.security.xm.player.jcodec.JCodecPlayer.processNAL (JCodecPlayer.java:69) at br.com.grupogiga.security.xm.player.XMH264Player $ 1 $ 2.NALArrived (XMH264Player.java:143) at br.com.grupogiga.security.xm.protocols.ProtocolParser.emitNALArrived (ProtocolParser.java:408) at br.com.grupogiga.security.xm.protocols.ProtocolParser.run (ProtocolParser.java:121) в java. lang.Thread.run (Thread.java:722)

Что я делаю неправильно ??? Как декодировать данные с помощью JCodec? Спасибо заранее.

ответ

0

Это выглядит не по своей вине, а скорее по внутренней ошибке JCodec. Вы можете проверить проблемы на their issue tracker, чтобы узнать, известно ли это. Если нет, вы можете создать проблему для этого. Обеспечьте трассировку стека и как можно больше информации.

+0

Большое спасибо! – Yore

0

Вы уверены, что получаете массив int? Кажется, это массив байтов из вашего распечатки. Я бы предложил не делать преобразование массива, а также не делать перемотку; ByteBuffer.wrap уже помещает вас в позицию 0 в буфере. 00 00 01 - это начало маркера NAL, а FD - тип NAL.

 Смежные вопросы

  • Нет связанных вопросов^_^