Python 下载 m3u8 视频并合成为 mp4
时间: 2023-08-03 07:05:53 浏览: 139
Python抓取m3u8格式视频文件并合并为MP4
要下载m3u8视频并将其合成为mp4格式,可以使用Python的requests库和FFmpeg库。首先需要使用requests库下载m3u8文件,然后解析m3u8文件获取视频的分片ts文件的URL地址。接着使用FFmpeg库将ts文件合成为mp4格式。以下是一个简单的示例代码:
```python
import os
import requests
import subprocess
# 安装FFmpeg之后,在此处填写FFmpeg的路径
ffmpeg_path = "/usr/local/bin/ffmpeg"
# 填写m3u8文件URL和输出mp4文件路径
m3u8_url = "https://example.com/video.m3u8"
mp4_file = "output.mp4"
# 下载m3u8文件
m3u8_response = requests.get(m3u8_url)
m3u8_content = m3u8_response.text
# 解析m3u8文件获取ts文件的URL地址
ts_urls = []
lines = m3u8_content.split("\n")
for line in lines:
if line.endswith(".ts"):
ts_url = os.path.join(m3u8_url.rsplit("/", 1)[0], line)
ts_urls.append(ts_url)
# 下载ts文件并保存到本地
for i, ts_url in enumerate(ts_urls):
ts_response = requests.get(ts_url)
ts_file = f"{i}.ts"
with open(ts_file, "wb") as f:
f.write(ts_response.content)
# 使用FFmpeg将ts文件合成为mp4格式
command = [ffmpeg_path, "-i", "concat:" + "|".join(ts_files), "-c", "copy", mp4_file]
subprocess.call(command)
# 删除临时的ts文件
for ts_file in ts_files:
os.remove(ts_file)
```
以上代码中,我们使用requests库下载m3u8文件,并解析出其中的ts文件URL地址。然后使用requests库下载每个ts文件并保存到本地,最后使用FFmpeg库将所有ts文件合成为mp4格式。合成完成后,输出文件会保存在指定的mp4文件路径下。注意,我们需要先将所有ts文件保存到本地,然后再使用FFmpeg将其合成为mp4格式,最后再删除临时的ts文件。
阅读全文