代码之家  ›  专栏  ›  技术社区  ›  Georg Fritzsche

访问iOS的视频解码器?

  •  23
  • Georg Fritzsche  · 技术社区  · 14 年前

    iPad/iOS支持视频流,例如使用H.264 MPMoviePlayerController

    更新: supports decoding frames 并且知道 H.264 ,但没有样本代码,也看不出实际解码时应该调用什么。


    更新


    5 回复  |  直到 6 年前
        1
  •  12
  •   Georg Fritzsche    14 年前

    在苹果DTS提出这个问题后,发现目前还没有办法对来自定制流源的视频数据进行解码。

        2
  •  6
  •   karlphillip    14 年前

    如果你仍然有问题,我建议你看看 libav编解码器 ffmpeg project

    dranger 显示如何正确解码(通过libavcodec)和显示视频数据(使用libsdl)等。

        3
  •  3
  •   Community CDub    4 年前

    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库可能是最简单的。)

    你呢 其实可以实现实际的硬件解码,在iOS中,使用FFmpeg

    我们发现它非常灵活。还有几个bug需要在FFmpeg中修补。(我希望我再也看不到 videotoolbox.c 再次:/)

    1. 用AVFoundation/VideoToolbox“手工”完成。

    2. 使用FFmpeg。

    第二项是令人难以置信的灵活和使用大量的时间。第一项花费了大量的时间。艰难的选择:/

        4
  •  2
  •   manishg    8 年前

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

        5
  •  1
  •   Jason Jenkins    14 年前

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