2010-08-30 47 views
24

iPad/iOS支持视频流。 H.264使用MPMoviePlayerController等,但我通过自定义专有流接收H.264数据,需要在软实时场景中解码。
iPads/iOS的视频解码器可以通过任何方式进行访问来解码这些数据吗?访问iOS的视频解码器?

更新:显然,iOS的4.0核心媒体框架supports decoding framesH.264知道,但没有示例代码和我可以看到我其实应该呼吁实际解码。

+1

AVAssets不支持流式传输。看来,低层次的核心媒体框架是应该寻找的地方。 H.264编解码器是在那里定义的,这是一个好兆头,并且有块缓冲结构,您不必将整个资产存储在内存或磁盘上。我希望看到代码的任何部分,尤其是对于样本缓冲区与图层进行协调或捕捉的部分。 – 2010-09-01 17:05:19

+0

@彼得:谢谢,看起来更有希望。它似乎应该支持解码到'CVImageBuffer',但我真的不知道实际解码的功能是什么。 – 2010-09-03 17:50:16

+0

MoviePlayer演示没有帮助你吗? http://developer.apple.com/iphone/library/samplecode/MoviePlayer_iPhone/Introduction/Intro.html – karlphillip 2010-09-08 16:10:10

回答

9

在提出Apple DTS的问题后,事实证明,目前无法解码来自自定义流源的视频数据。

我将为此提交一个增强请求。

+0

增强请求是否对公众开放?我想为它投票:) – Gili 2012-09-14 21:19:21

+0

@Gili:不,但你也可以打开一个bug /增强请求。 – 2012-11-02 09:18:36

+0

嗨,乔治。我知道自那以后相当长的一段时间,但对这个问题仍然没有很好的答案。 如果有任何使用自定义流源的方式,请分享一下吗?太感谢了! – 2015-06-17 02:44:20

1

您是否尝试将从协议接收到的H.264流写入临时文件,然后一直写入足够的字节以避免缓冲播放,并将临时文件的URL传递给临时文件的MPMoviePlayerController?

4

如果你仍然有问题,我建议你看看libavcodec解码数据(在ffmpeg project上可用)。

dranger有很多ffmpeg教程,展示了如何正确解码(通过libavcodec)和显示视频数据(使用libsdl)等等。

+0

此时我并没有寻找替代品,但无论如何感谢。 – 2010-09-10 06:51:10

+0

有趣。然而,libavcodec是LGPL,据我了解,它不能用于商业iOS应用程序(因为它需要静态链接)。或者我误解了一些东西? – Sander 2012-03-06 11:31:49

+1

这[细线程](https://news.ycombinator.com/item?id=3341852)讨论了一些问题。 – karlphillip 2012-03-06 11:42:15

0

使用iOS 8,您可以使用视频工具箱(https://developer.apple.com/reference/videotoolbox)将H264解码为原始帧。 VT API是硬件加速的,与libavcodec相比,它会为您提供更好的性能。如果您想播放这些帧或生成预览,可以使用基于eagl的渲染器播放。我已经编写了一个示例应用程序来将帧从原始帧编码为h.264(https://github.com/manishganvir/iOS-h264Hw-Toolbox)。生h.264应该不是那么困难!