问题 使用ios进行HTTP直播


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

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

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

所以我的问题是:

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

提前致谢。


8312
2017-07-25 05:52


起源

您能否澄清一下您的应用是发送实时视频还是观看实时视频?如果查看,您对视频流的来源有多少控制? - vipw
我的应用程序具有视频查看功能,视频大约1到1.30小时,并具有mp4格式。当我向Apple提交应用程序时,我使用的是MPMovieplayer但是现在根据苹果我必须使用HTTP Live流媒体协议并实现这一点我必须将我的视频网址从mp4格式更改为m3u8格式,以便如何将我的视频网址从mp4格式转换为m3u8格式,当我得到m3u8 url如何在我的应用程序中播放。谢谢vipw。 - Nikh1414
嗨Nikh,我正在寻找相同的发展。我有wowza流媒体引擎和iOS Media lib,不知道如何从媒体lib iOS项目中流式传输视频帧到wowza。你能分享一下示例代码吗? - Stella


答案:


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

我必须将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工具创建一个主播放列表文件,该文件将指向您的播放器每个带宽,以便它可以自动切换。

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

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

我必须使用MPMoviePlayer吗?

我不能评论其他库,我们使用MPMoviePlayer。

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

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

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

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

压缩机 - 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

希望一切都有道理:)


11
2017-10-14 13:57



嗨哼,我正在寻找同样的发展。我有wowza流媒体引擎和iOS Media lib,不知道如何从媒体lib iOS项目中流式传输视频帧到wowza。你能分享一下示例代码吗? - Stella


如果您的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
2017-11-01 06:27





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

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

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


1
2018-03-08 07:12