3

我正在尝试从相机解码 H264 原始协议,但我在使用 Jcodec H264Decoder 时遇到了一些问题。我收到一个整数数组,其中包含来自相机的信息。下面是数据样本:

阵列:00 00 01 FD 00 00 14 69 00 00 00 01 61 E4 80 6F 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 如下:

org.jcodec.codecs.h264.H264Decoder$FrameDecoder.decodeFrame(H264Decoder.java:82) 在 org.jcodec.codecs.h264.H264Decoder.decodeFrame(H264Decoder.java) 的线程“Thread-6”java.lang.NullPointerException 中的异常:61) 在 br.com.grupogiga.security.xm.player.jcodec.JCodecPlayer.test_readNals(JCodecPlayer.java:122) 在 br.com.grupogiga.security.xm.player.jcodec.JCodecPlayer.processNAL(JCodecPlayer.java :69) 在 br.com.grupogiga.security.xm.player.XMH264Player$1$2.NALArrived(XMH264Player.java:143) 在 br.com.grupogiga.security.xm.protocols.ProtocolParser.emitNALArrived(ProtocolParser.java:408) ) 在 br.com.grupogiga.security.xm.protocols.ProtocolParser.run(ProtocolParser.java:121) 在 java.lang.Thread.run(Thread.java:722)

我做错了什么??如何使用 JCodec 解码数据?提前致谢。

4

2 回答 2

0

在我看来,这不是你自己的错,而是一个内部 JCodec 错误。您可以检查他们的问题跟踪器上的问题,看看这是否已知。如果没有,您可能需要为此创建一个问题。提供堆栈跟踪和尽可能多的信息。

于 2014-01-16T14:01:22.243 回答
0

你确定你得到一个 int 数组吗?从您的打印输出来看,它似乎是一个字节数组。我建议不要进行数组转换,也不要倒带;ByteBuffer.wrap 已经将您置于缓冲区中的第 0 位。00 00 01 是 NAL 标记的开始,FD 是 NAL 类型 btw。

于 2014-12-20T21:49:20.100 回答