qianyi0129
V2EX  ›  问与答

如何下载 m3u8 视频?

  •  
  •   qianyi0129 · Feb 9, 2018 · 33399 views
    This topic created in 3189 days ago, the information mentioned may be changed or developed.

    知道 m3u8 地址 ,也可以播放 mac 上

    下载这个有啥技术难度么?为啥找不到相关程序

    Supplement 1  ·  Feb 11, 2018
    31 replies  •  2020-03-09 14:52:13 +08:00
    catror
    catror
    Feb 9, 2018❤️1
    1
    没啥技术难度,m3u8 本身是一个文本文件,里面存的是一堆视频片段的 URL,一个个下载下来再合并就行。
    你可以直接用 ffmepg 来下载,搜一下"ffmpeg m3u8 转 mp4",会有你要得结果。
    sen506
    sen506
    Feb 9, 2018 via iPhone❤️1
    3
    ffmpeg -i your_url -codec copy out.flv
    qianyi0129
    qianyi0129
    OP
    Feb 9, 2018
    4
    @catror 所以这么简单为啥没人整出来一个一体化的工具
    crab
    crab
    Feb 9, 2018
    5
    @qianyi0129 善用搜索
    sundayhk
    sundayhk
    Feb 9, 2018 via Android
    6
    github 有 m3u8-download
    liuwenxu
    liuwenxu
    Feb 9, 2018 via iPhone
    7
    win 我一直用的 potplayer,每天定时录制,mac vlc 应该可以录制,这玩意只能叫录制
    nicevar
    nicevar
    Feb 9, 2018
    8
    @qianyi0129 github 上一搜一堆,python 实现的也不少,弄下来直接用就行了,因为 m3u8 可以搞出些花样来,一体化的工具并不那么适用,不如代码根据实际需求修改
    JoostShao
    JoostShao
    Feb 9, 2018
    9
    加密的怎么下载?
    Valyrian
    Valyrian
    Feb 10, 2018
    12
    不推荐直接用 ffmpeg,单线程的,特别慢
    shellcmd
    shellcmd
    Feb 10, 2018 via Android
    13
    好像手机上 uc 直接就可以下载
    lrz0lrz
    lrz0lrz
    Feb 10, 2018
    14
    @qianyi0129 #4 所以这么多工具为啥你找不到
    qianyi0129
    qianyi0129
    OP
    Feb 10, 2018
    15
    @lrz0lrz github 上那些啊 停更很久了
    haoliang
    haoliang
    Feb 10, 2018
    16
    伸手党
    lm902
    lm902
    Feb 10, 2018
    17
    前不久做的 M3U8 下载工具,在 bin 下的 Debug 目录中可以看到编译好的文件 https://share.weiyun.com/f549cc174b675e0d0afa0f49f88f9d24
    acupnocup
    acupnocup
    Feb 10, 2018 via iPhone
    18
    IDM 复制地址就下载
    param
    param
    Feb 10, 2018 via Android
    19
    ffmpeg 即可。參見 3 樓。
    cyp777777
    cyp777777
    Feb 28, 2018 via Android❤️1
    20
    qianyi0129
    qianyi0129
    OP
    Feb 28, 2018
    21
    @cyp777777 我用 mac
    cyp777777
    cyp777777
    Mar 3, 2018 via Android
    22
    @qianyi0129 那就不会写咯😄
    c4f36e5766583218
    c4f36e5766583218
    Jan 3, 2019
    23
    @sen506 ffmpeg 可以只下载并保存文件,但不合并吗?
    yanbook
    yanbook
    Apr 4, 2019
    24
    @cyp777777 这个最好,可以修改连接数满速下载.其它的下载工具只能一个一个文件下载,慢死了 .谢谢. 另外这个工具好像没法指定下载位置,默认输出到软件目录下的 output 文件夹.
    cyp777777
    cyp777777
    May 11, 2019 via Android
    25
    @yanbook 下载位置可以用配置来指定。改默认的话,可能得下个大版本吧
    shuangyeying
    shuangyeying
    Jun 14, 2019❤️1
    26
    我也来补充一下,Downie 可以下载 M3U8。
    Spoter
    Spoter
    Jun 29, 2019
    27
    brMu
    brMu
    Sep 2, 2019
    28
    @cyp777777 多线程下载,速度敢敢地,特来感谢!
    leehon
    leehon
    Feb 4, 2020
    29
    iHTCboy
    iHTCboy
    Mar 9, 2020
    30
    Python 来一波!

    ```python3

    import os
    import requests

    # 下载 m3u8 格式的视频
    def download_m3u8(video_download_url, multimedia_path):
    print("start download video")
    all_content = requests.get(video_download_url).text # 获取 M3U8 的文件内容
    file_line = all_content.split("\n") # 读取文件里的每一行
    length = len(file_line)
    print('video length:', length)
    # 通过判断文件头来确定是否是 M3U8 文件
    if file_line[0] != "#EXTM3U":
    raise BaseException(u"非 M3U8 的链接")
    else:
    unknow = True # 用来判断是否找到了下载的地址
    for index, line in enumerate(file_line):
    if "EXTINF" in line:
    unknow = False
    # 拼出 ts 片段的 URL
    pd_url = video_download_url.rsplit("/", 1)[0] + "/" + file_line[index + 1]
    res = requests.get(pd_url)
    print(length, '-', index)
    with open(multimedia_path, 'ab') as f:
    f.write(res.content)
    f.flush()
    if unknow:
    raise BaseException("未找到对应的下载链接")
    else:
    print("video download finish~")


    ```
    iHTCboy
    iHTCboy
    Mar 9, 2020
    31
    格式没有了-x-,还是补一个原格式的: https://gist.github.com/iHTCboy/ba60fab028de5eff266dd3e70d70eff2
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2899 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 73ms · UTC 13:19 · PVG 21:19 · LAX 05:19 · JFK 08:19
    ♥ Do have faith in what you're doing.