FFmpeg 给 M3U8 文件补上基础网址再下载m3u8的视频
要利用 FFmpeg 给 M3U8 文件补上基础网址,可以通过修改 M3U8 文件内容,为每个分片 URL 添加基础网址,再使用 FFmpeg 进行后续处理(如下载、转码等)。以下是具体步骤:
步骤1:确定基础网址
假设你的基础网址是 https://example.com/video/ (需替换为实际的基础域名+路径)。
步骤2:修改 M3U8 文件的分片 URL
M3U8 中的分片 URL 是相对路径,需要将其替换为基础网址+相对路径的绝对 URL。可以通过文本编辑器手动修改,或用脚本批量处理。
例如,原分片 URL 是 283288058_242207984_1.ts?start=0&end=1485951&type=mpegts&resolution=720x12… ,修改后应为 https://example.com/video/283288058_242207984_1.ts?start=0&end=1485951&type=mpegts&resolution=720x12… 。
步骤3:使用 FFmpeg 处理带基础网址的 M3U8
修改完成后,即可用 FFmpeg 对 M3U8 进行下载、转码等操作。例如,将 M3U8 下载并合并为 MP4 文件:
bash
ffmpeg -i 你的修改后.m3u8 -c copy 输出文件.mp4
批量修改的脚本示例(Python)
如果 M3U8 文件较长,可通过 Python 脚本批量添加基础网址:
python
base_url = "https://example.com/video/" # 替换为实际基础网址
input_m3u8 = "input.m3u8" # 原M3U8文件名
output_m3u8 = "output.m3u8" # 修改后的M3U8文件名
with open(input_m3u8, "r") as f_in, open(output_m3u8, "w") as f_out:
for line in f_in:
if line.strip().startswith(("http://", "https://")):
# 若已有绝对URL则跳过(或根据需求调整)
f_out.write(line)
elif line.strip().endswith((".ts", ".m4s")): # 分片文件扩展名
f_out.write(base_url + line)
else:
f_out.write(line)
运行脚本后,得到的 output.m3u8 就是包含完整基础网址的文件,再用 FFmpeg 处理即可。
通过以上步骤,就能为 M3U8 文件的分片 URL 补上基础网址,进而用 FFmpeg 完成后续操作。