iOS上的原始H264 NALU硬件解码

Tim*_*Tim 9 iphone h.264 ipad ios

我从IP摄像机(通过Live555)接收原始的H.264 NALU,我想用硬件解码它们,因为FFmpeg很棒,但它太慢(相机传感器很大).

我看到的唯一解决方案是将NALU写入某些电影容器文件(如MPEG-4),然后使用a读取和解码该文件AVAssetReader.

我在杂草中走了吗?是否有人成功解码了流中的H.264 NALU?有没有人有任何关于将NALU写入MPEG-4文件的技巧?其他想法?

Aki*_*Aki 6

像Matt提到的那样,没有直接访问Apple的H264解码器.

但是,我在ffmpeg和h264解码方面取得了成功.就像你提到的那样,我用LGPL构建了ffmpeg我能够将H264流一直解码为实时高清视频流,ipad和iphone都没有延迟.ffmpeg不需要任何花哨的东西,你可以找到一堆标准的解码c ++代码,它们在iOS上运行得很好.此外,在我的情况下,H264 NALU通过RTP/RTSP实时传送.

此外,如果我是你,我会通过xcode仪器运行你的应用程序,以真正看到你的瓶颈在哪里,但我会非常惊讶它是在ffmpeg解码步骤..希望这个信息有帮助.

  • 你的解码步骤和它一样快.但是,我强烈建议使用opengl着色器而不是使用ffmpeg来执行yuv-rgb转换,这会将该过程卸载到GPU. (3认同)
  • 感谢您确认使用ffmpeg成功解码实时高清.我的设置是相同的 - RTSP/RTP + ffmpeg.看完你的帖子后,我仔细看了一下,发现我的服务器正在以1,500,000 bps的比特率发送2144 x 1944视频.如果我将比特率降低到350,000 bps,则非IDR帧解码(avcodec_decode_video2)在大约80 ms内运行,而Yuv - > RGB颜色对话(sws_scale)在大约65 ms内运行.这些是来自iPad 3的数字.我很高兴听到你是否认为我可以从iPad中挤出更多.谢谢! (2认同)