访问iOS的视频解码器?

时间:2010-08-30 13:48:06

标签: iphone ipad video-streaming

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

更新:显然是iOS 4.0核心媒体框架supports decoding frames并且知道H.264,但是没有示例代码也无法看到我实际应该调用的内容用于实际解码。


更新(十年后!)

对于在Google上搜索的任何人,您最近都会使用“VideoToolbox”在iOS中执行此操作。


5 个答案:

答案 0 :(得分:11)

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

我将为此提交增强请求。

答案 1 :(得分:6)

如果您仍然遇到问题,我建议您查看 libavcodec 以解码数据(可在ffmpeg project上找到)。

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

答案 2 :(得分:2)

2019

有两种解决方案

  1. “手动”执行,这意味着要使用AVFoundation,尤其是VideoToolbox。

要开始工作,基本上是从https://developer.apple.com/videos/play/wwdc2014/513/开始!

我不得不说,这确实是“正确和更好”的解决方案。

  1. 如果可以使ffmpeg-api在iOS应用程序中运行,则可以使用ffmpeg,FFmpeg会在经过一些摆弄后进行硬件解码。

有很多开始的方法。 (一件绝对令人惊奇的新事物是sunlubo制造的SWIFT ffmpeg:https://github.com/sunlubo/SwiftFFmpeg

请注意“ ffmpeg”方法,简而言之,ffmpeg / iOS存在许多法律/许可问题。可以搜索并了解这些问题。

但是,从技术角度来看,如今确实可以直接将ffmpeg编译到iOS中,并在iOS代码中原始使用它。 (使用C库可能是最简单的。)

我们只是做了一个巨大的项目,就在做这个以及其他方法。 (我再也不想见FFmpeg了!)

实际上可以使用FFmpeg在iOS中实现实际的硬件解码

我们发现它太不可思议了。并且需要在FFmpeg中修复几个错误。 (我希望我再也见不到videotoolbox.c了:/)

再一次,您在iOS中进行硬件解码的两个选项是

  1. “手动”执行AVFoundation / VideoToolbox。

  2. 使用FFmpeg。

第2项令人难以置信,并且花费大量时间。项目1使用大量时间。艰难的选择:/

答案 3 :(得分:1)

您是否尝试将从协议中收到的H.264流写入您不断附加的临时文件,然后在编写足够的字节以避免缓冲播放后,将临时文件的URL传递给MPMoviePlayerController ?

答案 4 :(得分:1)

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