m3u8的合并代码

本文介绍了如何通过Python脚本下载M3U8文件中的TS片段,并使用FFmpeg工具合并为一个MP4文件。步骤包括下载M3U8片段、组合成新的M3U8列表,最后执行命令行操作完成视频合并。务必注意处理key文件和正确引用路径。
摘要由CSDN通过智能技术生成
"""
ALERT:
需要下载ffmpeg工具进行合并
如果F12打开后检测有key文件,需要把该文件一并copy并修改m3u8中的KEY文件指向路径../XXX.key
"""
import requests
import os, re
generation_new_m3u8 = "newindex.m3u8"
need_download_m3u8 = 'index.m3u8'
new_mp4_document = 'd:\\test\\combination.mp4'
# 这里的URL是请求路径,一般情况下,URL配合M3U8文件里的指向地址拼接才是真正路径,所以需要f12看到真正的地址后在确定拼接方式
url = 'xxxxxxxxxxx'

# cmd_command = ffmpeg -allowed_extensions ALL -i index.m3u8 -c copy target.mp4


def downLoadM3u8():
    flag = 1
    index_number = 0
    o = open(need_download_m3u8, 'r')
    for index, i in enumerate(o.readlines()):
        if index >= index_number:
            if re.findall(r'\.ts', i):
                print('原始数据是{}'.format(i))
                print('开始请求接口')
                segment = requests.get(url=url + i.strip()).content
                p = open('fileM3u8/' + str(flag) + '.ts', 'wb')
                p.write(segment)
                p.close()
                print('完成了第{}部分,当前flag是{}'.format(index, flag))
                flag += 1
    o.close()


def combinationFile():
    print('开始合并文件')
    objfile_list = os.listdir('fileM3u8')
    objfile_list.sort(key=lambda x: int(x[:-3:]))
    no = open("fileM3u8/"+ generation_new_m3u8, 'w')
    p = open(need_download_m3u8, 'r')

    objfile_list_tag = 0
    for index, i in enumerate(p.readlines()):
        if re.findall(r'\.ts', i):
            no.write(objfile_list[objfile_list_tag] + '\n')
            objfile_list_tag += 1
        else:
            no.write(i)
    p.close()
    no.close()


def cmdCommand():
    # execute cmd command
    # 连续输入多行CMD需要用 && 来链接
    cmd = "cd e:\\workspace\\untitled\\m3u8extract\\fileM3u8 &&" +'ffmpeg -allowed_extensions ALL -i ' + generation_new_m3u8 + ' -c copy ' + new_mp4_document
    print(cmd)
    os.system(cmd)


if __name__ == '__main__':
    downLoadM3u8()
    combinationFile()
    cmdCommand()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值