两种类型的M3U8文件处理方法:优化您的视频播放体验
两种类型的M3U8文件处理方法:优化您的视频播放体验
本文将介绍两种不同类型的M3U8文件,并提供针对每种类型的处理方法,以确保视频播放流畅,提升用户体验。
1. 以'https'开头的M3U8文件
这类M3U8文件通常包含视频源的链接,需要对链接进行替换以获得正确的播放地址。具体操作如下:
- 将文件中的所有'https'替换为'返回url',但仅限第一次出现。
- 保持以'media_'开头的行不变,这些行通常包含视频片段的链接。
2. 以'#YUMING|https'开头的M3U8文件
这类M3U8文件通常包含视频源的链接,以及一些附加信息。需要对链接进行替换,并删除以'#YUMING|https'开头的行。具体操作如下:
- 获取文件第一行中的'https'链接,并添加'playlist.m3u8',然后使用请求库(如requests)获取响应。
- 将响应中的URL(去掉'playlist.m3u8'部分)作为新的返回URL。
- 将文件中的每一行开头的'media_'字段替换为'返回url' + 'media_',但仅限第一次出现。
- 删除以'#YUMING|https'开头的行。
代码示例
import os
import requests
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'Accept-Language': 'en-US,en;q=0.9,ja-JP;q=0.8,ja;q=0.7',
'Cache-Control': 'no-cache',
'Connection': 'keep-alive',
'Pragma': 'no-cache',
'Upgrade-Insecure-Requests': '1'
}
dir_path = input('请输入.m3u8文件所在目录的路径:')
https_files = []
yuming_files = []
for file_name in os.listdir(dir_path):
if file_name.endswith('.m3u8'):
print(f'处理文件: {file_name}')
file_path = os.path.join(dir_path, file_name)
with open(file_path, 'r') as f:
lines = f.readlines()
if lines[0].startswith('#YUMING|https'):
yuming_files.append(file_path)
elif 'https' in lines[1]:
https_files.append(file_path)
for file_path in https_files:
with open(file_path, 'r') as f:
lines = f.readlines()
new_lines = []
for line in lines:
if line.startswith('#'):
new_lines.append(line)
elif 'media_' in line:
new_lines.append(line)
else:
new_lines.append(line.replace('https', '返回url', 1))
with open(file_path, 'w') as f:
for line in new_lines:
f.write(line)
for file_path in yuming_files:
with open(file_path, 'r') as f:
lines = f.readlines()
url = lines[0][lines[0].index('https'):lines[0].index('/-/')+3]
response = requests.post(url + 'playlist.m3u8', headers=headers)
if response.status_code == 200:
print(f'成功:{response.status_code}')
new_url = response.url
new_url = new_url[:new_url.index('playlist.m3u8')]
new_lines = []
for line in lines:
if line.startswith('#'):
new_lines.append(line)
elif 'media_' in line:
new_lines.append(new_url + line)
else:
continue
with open(file_path, 'w') as f:
for line in new_lines:
f.write(line)
通过以上方法,您可以有效地处理不同类型的M3U8文件,确保视频播放的流畅性和稳定性,提升用户体验。
原文地址: https://www.cveoy.top/t/topic/nErX 著作权归作者所有。请勿转载和采集!