使用AVFoundation在iOS上播放socket-streamamed h.264电影

时间:2012-03-21 12:33:57

标签: ios avfoundation

我正在开发一个小型iPhone应用程序,它使用常规套接字通过网络连接流式传输电影内容。视频格式为H.264。然而,我在播放/解码数据方面遇到了困难。我一直在考虑使用FFMPEG,但许可证使其不适合该项目。我一直在研究Apple的AVFoundation框架(特别是AVPlayer),它似乎能够处理h264内容,但是我只能找到使用url启动电影的方法 - 而不是通过证明从网络流式传输的内存缓冲区。

我一直在做一些测试,无论如何都要使用以下方法:

  1. 使用常规AVPlayer播放电影。每次在网络上接收数据时,都会使用fopen和append-mode将其写入文件。然后使用更新的数据重新加载/重新创建AVPlayer的资产。这种方法似乎存在两个问题:首先,当第一个资产被卸载并且新加载时,屏幕会短暂变黑。其次,我不知道比赛的确切位置,所以我不确定如何找到合适的位置开始播放新资产。
  2. 第二种方法是像第一种方法一样将数据写入文件,但不同之处在于数据被加载到第二个资产中。然后使用AVQueuedPlayer,其中第二个资产在播放器中插入/排队,然后在缓冲完成时调用。然后可以在没有黑屏的情况下卸载第一个资产。然而,使用这种方法,找出从哪里开始播放新资产更麻烦(比第一种方法)。
  3. 有没有人做过这样的事情并让它发挥作用?有没有正确的方法使用AVFoundation

    执行此操作

1 个答案:

答案 0 :(得分:0)

执行此操作的官方方法是HTTP Live Streaming格式,它支持多种质量级别(以及其他内容)并自动在它们之间切换(例如:如果用户从WiFi移动到移动电话)。

您可以在此处找到文档:Apple Http Streaming Docs