使用ios进行HTTP直播

时间:2012-07-25 05:52:32

标签: iphone http-live-streaming

我的应用被苹果拒绝,他们给出了理由

  

我们发现您的应用不使用HTTP直播流协议(基线流速为64 kbps)来播放流媒体视频

然后我搜索解决方案并在互联网上搜索所有解决方案建议我必须使用.U8F8和.ts扩展名进行直播,但我的应用程序有mp4格式。我已经使用MPMoviePlayerController进行流式传输。

所以我的问题是:

  1. 我是否必须将mp4视频转换为M8U8?
  2. 我是否必须使用MPMoviePlayer
  3. 我可以在运行时将mp4视频转换为M8U8格式以及如何实现实时流式传输
  4. 是否有可用于HTTP直播的示例代码?
  5. 提前致谢。

3 个答案:

答案 0 :(得分:11)

我只能评论预先录制的视频,而不是直播...

  

我是否必须将mp4视频转换为M8U8?

我认为你的意思是.m3u8。基本上,您需要获取.mp4文件并且:

  1. 将其编码为移动带宽的友好比特率。您可以使用Apple的Compressor *应用程序,它具有HTTP Live Streaming的预设。如果你在玩游戏,请选择1000kbps左右的东西。

  2. 使用Apple的mediafilesegmenter将输出切片。你最终会得到很多小的.ts文件和一个列出它们的清单(.m3u8)。

  3. 点击播放器中的.m3u8文件(initWithContentURL ...)即可关闭。

  4. 重复上述步骤1和2并指定不同的带宽。我们选择了Compressor中的预设。

  5. 您最终会得到不同版本的视频,每个带宽1个,使用Apple的variantplaylistcreator工具创建一个主播放列表文件,该文件会将您的播放器指向每个带宽,以便它可以自动切换。 / p>

  6. 将所有.ts文件和.m3u8文件粘贴在网上并使用mediastreamvalidator工具检查您的主播放列表文件是否正常并正确指向每个版本。

  7. 确保在主播放列表文件中首先获得合适的质量比特率,因为这是首先播放的版本。我们选择了大约1000kbps的标记。

      

    我是否必须使用MPMoviePlayer?

    我无法对其他库发表评论,我们使用了MPMoviePlayer。

      

    我可以在运行时将mp4视频转换为M8U8格式以及如何实现实时流式传输

    您可以使用实时流,但对于预先录制的视频,您可以在此之前完成所有操作。将所有文件置于在线状态,验证播放列表(.m3u8)并使用.m3u8主文件播放视频。

      

    是否有可用于HTTP直播的示例代码?

    在我们的实现中,iOS中的客户端完成所有工作(例如,根据可用带宽切换流)。因此,您只需要确保所有文件都在正确的位置。

    Compressor - http://www.apple.com/finalcutpro/compressor/ mediafilesegmenter和mediastreamvalidator工具命令行工具可从Apple开发人员网站下载。

    这些文章包含您需要知道的一切: https://developer.apple.com/library/ios/#documentation/networkinginternet/conceptual/streamingmediaguide/Introduction/Introduction.html https://developer.apple.com/library/ios/#technotes/tn2288/_index.html#//apple_ref/doc/uid/DTS40012238

    在Safari中打开它: https://developer.apple.com/resources/http-streaming/examples/advanced-stream.html - 每个'Gear'都是不同的比特率流

    在文本编辑器中打开此.m3u8文件以获取示例主播放列表文件:https://devimages.apple.com.edgekey.net/resources/http-streaming/examples/bipbop_16x9/bipbop_16x9_variant.m3u8

    希望一切都有道理:)

答案 1 :(得分:2)

如果您的MP4文件长度超过10分钟,则需要使用HLS来传输文件 对于实时流,您可以使用这样的软件对其进行实时编码: http://www.mcommstv.com/products/mcomms-transcode

如果是VoD文件,则使用您喜欢的H.264 / AAC编码器对其进行预编码。

请记住包含文件的多个比特率版本,包括64kbps。如果您不包含64kbps流,Apple将拒绝该应用程序。我们通常使用: 64K 120K 240K 480K 800kbps 1200kbps 您在多速率m3u8文件中首先列出的比特率将在前30秒播放,首先放入中等比特率,这样当用户在慢速3G网络上时,开始流式传输不会花费太长时间。这是一个例子:

#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=120000
120k/Playlist.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=60000
60k/Playlist.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=240000
240k/Playlist.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=480000
480k/Playlist.m3u8

答案 2 :(得分:1)

我们必须将任何音频文件转换为m3U8 formnat。

在运行时我找不到任何插件。我搜索的很少。

我们可以使用视频标记在HTML5中使用此网址。 我们也可以上传点播视频。