从JAVA中的h264编码视频中获取SPS和PPS

时间:2014-02-27 10:25:13

标签: java h.264

我实际上对某个问题有点困惑,我真的希望有人可以帮我解决这个问题。

我的问题如下: 我有一个现场USB摄像头,我只用h264编码视频,以便通过网络将RTP通过网络发送到接收器(我的接收器用于测试目的是Ekiga)。 在h264中仅编码视频后,我有一个字节数组。

现在有了这个字节数组,我想提取SPS和PPS。我希望获得这些信息,以便在向接收器发送帧时能够发送以下序列: SPS => PPS =>帧1(IDR图片的编码片段)=>帧2(IDR图片的非编码片段)=>帧3(IDR图像的非编码切片)=>等等...

我如何提取这些信息,我想要一个可以帮助我的JAVA库? (JCODEC nop docs ?? !!)

感谢您的帮助。 罗尼

2 个答案:

答案 0 :(得分:5)

这取决于您的编码器。如果它产生附件b流,则sps / pps很可能是第一个和第二个Nalus。除非它也生成访问单元分隔符,在这种情况下它将是第二和第三。如果它没有产生附件b,则需要以另一种方式从编码器API获得该数据。无论哪种方式,您都需要解析流。你可以在这里看到更多细节。

Possible Locations for Sequence/Picture Parameter Set(s) for H.264 Stream

NALU的另一件事与框架不同。框架可以由许多NAL组成。

答案 1 :(得分:1)

感谢您的帮助和回答。好吧,我的研究和工作继续(我是这个领域的新手),我已经能够将我的视频传输到接收器。这里的接收器是Jitsi,我用它进行测试。

我也看到了你提供给我的链接,我确实理解了很多不完全清楚的东西。

现在,我的实际问题在于我在Jitsi收到的视频质量。事实上,我正在使用Xuggler将我的原始视频(从我的网络摄像头流式传输)编码为H264格式。当Xuggler对我的视频进行编码时,我现在可以看到正确的SPS,PPS和SEI标题,你说得对,我可以注意到太多的NAL构成我的帧,通过网络传输。

我认为使用另一个库而不是Xuggler会更好但是出现了我真正的问题。 JCodec,没有文档,根据我的阅读,处理H264视频的速度有点慢。

请您指导我选择一个可以帮助我编码和解码H264视频流的好库吗?

有没有人知道Java中的库可以为我做这些以及与此库相关的一些文档吗?

感谢您的帮助。 罗尼