【问题标题】:Saving m3u8 video to disk in swift cocoa用 swift cocoa 将 m3u8 视频保存到磁盘
【发布时间】:2017-04-17 04:08:24
【问题描述】:

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

谢谢, 菲尔

【问题讨论】:

    标签: swift cocoa video streaming m3u8


    【解决方案1】:

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

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

    还值得注意的是,某些视频流将被加密,实际上大多数高价值流(如 Netflix 等)都会被加密,因此下载它们将不允许您播放它们,除非您作为提供商自己的一部分这样做'下载并运行服务。

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

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

    【讨论】:

    • 感谢米克的回复。我不相信在 m3u8 文件上使用 httpdownloading 函数会返回我想要保存的 .ts 视频文件。我认为它只会返回 m3u8 文件。我可以解析 m3u8 文件以获取我正在寻找的实际链接,但这似乎比必要的工作更多,因为视频作为一个资产可以正常播放。在做了更多研究之后,我相信我可以使用 AVAssetResourceLoader 来处理进入我的 AVAsset 的数据,所以我认为这会起作用。如果此选项有效,我会更新我的帖子。
    • 是的 - 我的意思是在视频流本身的 URL 上使用下载功能,而不是 m3u8 文件。
    猜你喜欢
    • 1970-01-01
    • 2012-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-26
    • 2017-02-16
    • 1970-01-01
    • 2013-01-17
    相关资源
    最近更新 更多