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

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

  •  
  •   nikoo · 2017-02-08 07:04:44 +08:00 · 6329 次点击
    这是一个创建于 2852 天前的主题,其中的信息可能已经有所发展或是发生改变。
    一个普通的 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
    wjm2038
        1
    wjm2038  
       2017-02-08 07:07:12 +08:00 via Android   ❤️ 1
    ffmpeg
    nikoo
        2
    nikoo  
    OP
       2017-02-08 07:10:37 +08:00
    @wjm2038 谢谢,我发帖之前搜索了很久,使用 ffmpeg 似乎只能将 m3u8 作为输入源然后输出一个合并后的 ts 文件,无法不合并按原始的分片储存每个 ts
    onlyice
        3
    onlyice  
       2017-02-08 07:35:02 +08:00 via Android
    自己写一个…
    onlyice
        4
    onlyice  
       2017-02-08 07:38:47 +08:00 via Android
    试试 livestream Python 库
    qyz0123321
        5
    qyz0123321  
       2017-02-08 07:39:26 +08:00 via Android
    把这个 ts 直接解析下载存储可好?
    Valyrian
        6
    Valyrian  
       2017-02-08 07:46:52 +08:00 via iPhone
    第一次见到不要合并视频的= =
    saxon
        7
    saxon  
       2017-02-08 08:53:14 +08:00 via iPhone
    楼主华为?
    LINAICAI
        8
    LINAICAI  
       2017-02-08 08:53:25 +08:00 via iPhone
    不合并太麻烦了,但不是么办法,使用本地内置 web 服务来播放下载好的 ts 切片
    LINAICAI
        9
    LINAICAI  
       2017-02-08 08:59:28 +08:00 via iPhone
    对了,索引文件其实可以使用一个开源库解析的,自己用队列一个个下载好各个 ts 段,当然索引也要保存起来,内建 web 服务指定 root 目录即可模拟播放网络视频,需要注意的是下载完所有片段一定还要修改索引文件里面每个片段的地址,修改成本地的
    DlYgod
        10
    DlYgod  
       2017-02-08 10:07:38 +08:00
    写个 shell 脚本下载啊 wget
    yishanxin
        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

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