如何下载 m3u8 视频?

2018-02-09 17:44:03 +08:00
 qianyi0129

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

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

31370 次点击
所在节点    问与答
31 条回复
qianyi0129
2018-02-28 18:01:25 +08:00
@cyp777777 我用 mac
cyp777777
2018-03-03 20:06:26 +08:00
@qianyi0129 那就不会写咯😄
c4f36e5766583218
2019-01-03 16:35:50 +08:00
@sen506 ffmpeg 可以只下载并保存文件,但不合并吗?
yanbook
2019-04-04 12:25:25 +08:00
@cyp777777 这个最好,可以修改连接数满速下载.其它的下载工具只能一个一个文件下载,慢死了 .谢谢. 另外这个工具好像没法指定下载位置,默认输出到软件目录下的 output 文件夹.
cyp777777
2019-05-11 17:24:50 +08:00
@yanbook 下载位置可以用配置来指定。改默认的话,可能得下个大版本吧
shuangyeying
2019-06-14 18:29:46 +08:00
我也来补充一下,Downie 可以下载 M3U8。
Spoter
2019-06-29 15:19:42 +08:00
brMu
2019-09-02 16:36:12 +08:00
@cyp777777 多线程下载,速度敢敢地,特来感谢!
leehon
2020-02-04 06:16:55 +08:00
iHTCboy
2020-03-09 14:50:55 +08:00
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
2020-03-09 14:52:13 +08:00
格式没有了-x-,还是补一个原格式的: https://gist.github.com/iHTCboy/ba60fab028de5eff266dd3e70d70eff2

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/429825

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX