首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
V2EX  ›  问与答

如何按原始格式下载 HLS (m3u8) 视频?

  •  
  •   nikoo · 2017-02-08 07:04:44 +08:00 · 4390 次点击
    这是一个创建于 1009 天前的主题,其中的信息可能已经有所发展或是发生改变。
    一个普通的 m3u8 URL 例如: http://wscdn.alhls.xiaoka.tv/201713/b4b/079/F69oXuFHQ7Wn0YFW/index.m3u8

    如何按原始格式下载其中包含的每个 ts 分片,并且该 m3u8 文件也一同保存在本地
    即不需要将多个 ts 分片合并为一个

    如何实现这个需求?谢谢各位!
    16 回复  |  直到 2018-02-19 08:08:34 +08:00
        1
    wjm2038   2017-02-08 07:07:12 +08:00 via Android   ♥ 1
    ffmpeg
        2
    nikoo   2017-02-08 07:10:37 +08:00
    @wjm2038 谢谢,我发帖之前搜索了很久,使用 ffmpeg 似乎只能将 m3u8 作为输入源然后输出一个合并后的 ts 文件,无法不合并按原始的分片储存每个 ts
        3
    onlyice   2017-02-08 07:35:02 +08:00 via Android
    自己写一个…
        4
    onlyice   2017-02-08 07:38:47 +08:00 via Android
    试试 livestream Python 库
        5
    qyz0123321   2017-02-08 07:39:26 +08:00 via Android
    把这个 ts 直接解析下载存储可好?
        6
    Valyrian   2017-02-08 07:46:52 +08:00 via iPhone
    第一次见到不要合并视频的= =
        7
    saxon   2017-02-08 08:53:14 +08:00 via iPhone
    楼主华为?
        8
    LINAICAI   2017-02-08 08:53:25 +08:00 via iPhone
    不合并太麻烦了,但不是么办法,使用本地内置 web 服务来播放下载好的 ts 切片
        9
    LINAICAI   2017-02-08 08:59:28 +08:00 via iPhone
    对了,索引文件其实可以使用一个开源库解析的,自己用队列一个个下载好各个 ts 段,当然索引也要保存起来,内建 web 服务指定 root 目录即可模拟播放网络视频,需要注意的是下载完所有片段一定还要修改索引文件里面每个片段的地址,修改成本地的
        10
    DlYgod   2017-02-08 10:07:38 +08:00
    写个 shell 脚本下载啊 wget
        11
    yishanxin   2017-02-08 12:55:04 +08:00   ♥ 2
    1. curl -O http://wscdn.alhls.xiaoka.tv/201713/b4b/079/F69oXuFHQ7Wn0YFW/index.m3u8
    2. for i in `cat index.m3u8| grep ts `;do url=' http://wscdn.alhls.xiaoka.tv/201713/b4b/079/F69oXuFHQ7Wn0YFW/'$i;curl -o $i $url;done

    两部搞定 , 自己写个脚本封装下 处理动态拼接 实际下载的链接
        12
    mooczz   2017-02-08 13:05:29 +08:00
    在 iOS 里实现过,分段下载, m3u8 文件存储在本地
        13
    diguoemo   2017-02-08 14:00:05 +08:00 via Android
    用 youtube-dl 可以很简单的下载
        14
    emric   2017-02-08 14:05:04 +08:00
    用正则把 m3u8 的内容分解出来,再下载。
        15
    em70   2017-02-08 14:05:49 +08:00 via Android
    m3u8 不能指向本地 ts 文件,可以起一个本地 server , ts 文件放 server 上, m3u8 里的所有链接改为本地 127.0.0.1 的 http 地址,这个 m3u8 就能离线播了
        16
    cyp777777   2018-02-19 08:08:34 +08:00 via Android
    过去 11 天了,楼主还要不。下载每个 ts 后解码就行了,写了个小工具默认合并,如果还需要的话我把取消合并也加上
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4086 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 25ms · UTC 06:53 · PVG 14:53 · LAX 22:53 · JFK 01:53
    ♥ Do have faith in what you're doing.