在 iPhone/iPad 上保存 HLS 流

Posted

技术标签:

【中文标题】在 iPhone/iPad 上保存 HLS 流【英文标题】:Save HLS stream on iPhone/iPad 【发布时间】:2012-06-23 16:35:21 【问题描述】:

我有一个 iPhone/iPad 应用程序,可以播放电视频道的 HTTP 直播流。我想添加一个录制功能,以便像电视录像机一样在设备上保存直播。

我不知道这是否可能,但我认为我有两种方法可以记录流。

    保存屏幕上显示的输出流,但我不知道怎么做……

    打开 m3u8 播放列表并下载播放列表的片段,将其保存并使用下载的片段创建一个 m3u8 播放列表。但在这种情况下,我会下载 2 次视频,一次使用 MPMoviePlayer,一次下载片段。

有人已经做过类似的事情,或者知道怎么做吗?

提前致谢!

【问题讨论】:

【参考方案1】:

您应该使用选项 2。

假设您在 Documents 文件夹(Documents/downloads)中创建了一个“下载”文件夹

首先在您的应用程序中运行 HTTPServer(即 Mongoose)。 将 Mongoose 的根路径定义到您的下载文件夹。 将视频和 m3u8 文件下载到下载文件夹。如果要更改 m3u8,请使用 NSString 方法。

播放录制的视频时,请使用如下地址

http://localhost:8080/playlist.m3u8

并且 MPMoviePlayer 应该可以毫无问题地播放录制的视频。

如果你想录制不同的视频,你可以在你的下载目录中实现目录系统。

【讨论】:

【参考方案2】:

您可以使用选项 2,并将您的下载代码设置为 http 代理。

您的代理将下载 m3u8 播放列表,并将 URL 重新写入地址 localhost。然后代理会根据 MPMoviePlayer 的请求从服务器下载。它只会将内容写入两个位置(存储和电影播放器​​)。

【讨论】:

@malinois 我没有。但是 HLS 确实通过代理工作,所以我想不出为什么它不能通过本地代理工作。

以上是关于在 iPhone/iPad 上保存 HLS 流的主要内容,如果未能解决你的问题,请参考以下文章

Hls 流 url 不会在 AVPlayer 中播放

如何使用nginx播放HLS流?

如何在iphone,ipad上安装一些常用命令行命令

Android VideoView 直播电视流 (HLS)

AES-128 加密 HLS 未经媒体流验证器工具验证

sh 在Mac上录制http直播流(HLS,在iOS设备上运行的那些流)的小脚本更好。脚本记录流f