swift - 在 swift cocoa 中将 m3u8 视频保存到磁盘

标签 swift cocoa video streaming m3u8

我正在尝试将任何 m3u8 流播放列表作为视频保存到磁盘作为 1 个完整的视频文件,类似于 vlc。我可以创建一个 AVAsset 并在 AVPlayer 中正常播放它,但是我尝试过的 m3u8 链接都从 asset.isExportable 返回 false,因此使用 AVAssetExportSession 不起作用。我认为有可能将链接作为 InputStream 打开,然后将其写入 OutputStream,但不知道如何执行此操作。这是一个可行的选择还是它只会返回实际的 m3u8 文件而不是 .ts 视频链接?任何正确方向的指导将不胜感激。我很好地研究了如何使用不同的类,我只是有点迷失了从这里去哪里。

谢谢, 菲尔

最佳答案

根据 m3u8 文件,从 m3u8 播放列表中的所有流构建单个视频实际上可能无法满足您的需求。

这是因为 m3u8 播放列表可以包含单个视频的多个比特率版本 - 因此,如果您将它们全部添加在一起,您将获得一个接一个具有不同质量级别(比特率)的相同视频。

同样值得注意的是,一些视频流将被加密,事实上大多数高值(value)流(如 Netflix 等)将被加密,因此下载它们将不允许您播放它们,除非您作为提供商自己的一部分这样做'下载即用”服务。

最后,某些服务可能会要求与视频流 URL 并行的某种形式的身份验证,从而使您难以访问流。

假设以上所有内容都很好或不适用于您的情况,那么视频文件本身可以使用 HTTP 下载功能作为文件下载。存在很好的例子,例如:https://stackoverflow.com/a/35510812/334402

关于swift - 在 swift cocoa 中将 m3u8 视频保存到磁盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43445004/

相关文章:

iphone - 使用 Cocoa 框架,当设置标签时,显式转换为 NSString 可以工作,但 stringValue 会引发异常。为什么?

objective-c - 验证 if 语句语法

ios - 在上传到服务器之前压缩视频和图像

java - 下载像 hotstar 这样的离线视频

swift - 从 App Delegate 执行 Segue - Swift

swift - 我可以通过分配结构体变量来创建 Swift 中自定义对象的 "copy"吗?

应用程序处于事件状态时不显示 Swift NSUserNotification

ios - Google 登录 iOS 快速错误 : bridging header '...path/myProject/myProject/myProject-Bridging-Header.h' does not exist

xcode - OSX 中的基础国际化

xml - 从播放列表中获取所有视频(Youtube API v3)