choosegx 发表于 2020-8-1 01:40

M3U8视频合并 神速 只需5秒 就能看电影

本帖最后由 choosegx 于 2021-4-5 13:06 编辑

每当夜深人静的时候,
太过孤独,就想看电影
而通过软件合并M3U8 实在是太久了
而我们时间 不多了




M3U8 文件简介
m3u8 文件实质是一个播放列表(playlist),其可能是一个媒体播放列表(Media Playlist)
看的视频会 缓存一些TC文件。按照特定的排序就可以 用浏览器播放的

文件格式如下所示
#EXTM3U         开头文件
#EXT-X-TARGETDURATION:15
#EXT-X-DISCONTINUITY
#EXTINF:10,          时间长短
#EXT-X-BYTERANGE:1117063@0          这句可以不要的
/storage/emulated/0/BaiduNetdisk/我的资源/.D91/ts_0       这个是文件地址 一般都是递增的
#EXTINF:10,
#EXT-X-BYTERANGE:385787@1117063    这句不要
/storage/emulated/0/BaiduNetdisk/我的资源/.D91/ts_1这是TS1
#EXTINF:10,
#EXT-X-BYTERANGE:385787@1117063    这句不要
/storage/emulated/0/BaiduNetdisk/我的资源/.D91/ts_2这是Ts2......Ts3   ts4
#EXTINF:10,



代码
https://static.52pojie.cn/static/image/hrline/line1.png
# a game

import os,re
global list_a

wjlb =input("输入文件地址")
os.chdir(wjlb)
wjdz = os.path.join(os.path.dirname(os.getcwd()),os.path.split(os.getcwd()))wjdz = f"{wjdz}.m3u8"   
#文件合并后将在文件父目录 生成的 播放器地址,生成完毕后直接用 浏览器 或者用播放器打开就能用了



a = """#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0"""
c = "\n#EXTINF:9.000000,\n"                   #这个是时间步长 9.000000
b = "\n#EXT-X-ENDLIST"
e = "file://"                              #abcd都是M3U8的格式


#获取 文件内的所有文件序列
def hqlist(wjlb):
    os.chdir(wjlb)
    list_a = os.listdir()
    kk = pxlist(list_a)                      #进行排序文件
    list_a = pj(wjlb,kk)                     #保存原地址,和新地址,方便取用
    return list_a
   
#把获取的文件 按需排列,这里观察原路径得知 最后的数字才是有用的
def pxlist(lis):
    newlist = []                            #存储新序列的表格                        
    list1 = []                              #老文件
    for i in lis:                           #取出表格
      k = []
      j = re.findall("\d+",i)
      if bool(j):
            k.append(int(j[-1]))                #这个“-1”是取最后一个数字   这个看他的排列顺序没种不一样的
            k.append(i)
            newlist.append(k)
    newlist = sorted(newlist,key = lambda newlist:newlist)
    for i in newlist:
      list1.append(i)
    return list1
      
#文件读写
def loadwj(read_a,write_a):
    with open(read_a, "rb") as f:
      with open(write_a,"wb") as g:
            g.write(f.read())

#文件地址的合并 主要m3u8的文件写入
def pj(a,b):
    d = []
    for i in b:
      c = os.path.join(a,i)
      d.append(c)
    return d

def main():
    with open (wjdz,"w") as f:
      f.write(a)
      for i in hqlist(wjlb):
            f.write(c)
            f.write(e)
            f.write(i)
      f.write(b)
main()

代码是用的Python    下载QPython3L 使用
你用其他程序也行 你不嫌麻烦的话 也可以手打

输入 复制文件地址的目录 ,就会在 文件的上级目录生成新文件
用浏览器 播放器打开都行 。大小 也就100多KB文件

07sky 发表于 2021-2-17 00:58

测试了优酷链接,m3u8后缀链接,ts后缀链接都没有成功。
默认我的是gbk的编码,添加了默认编码,其他的没有改动
提示是winerror123系统文件或者目录命名错误,第8行。
有运行成功或者操作成功的发个图看看,我以为这个是用来以m3u8列表合并提取后续ts视频文件的,结果好像和我想的不太一样。

choosegx 发表于 2020-8-1 19:06

Harkgreen 发表于 2020-8-1 13:29
其实用cmd命令也能合并吧?原来快播的东西我就合过

这东西主要是快,M3U8播放的播放列表 最大 100kb , 用CMD合并 要等几分钟 ,现在都快餐文化 。
关键这其实 还有作用 ,就是藏东西。可以把视频文件拆分 500多份碎片

Rene 发表于 2020-8-1 09:18

这个太过孤独有点东西

充电室 发表于 2020-8-1 09:24

哈哈哈不会用。但是这代码命名挺有意思的。哈哈哈哈

龙飞天下 发表于 2020-8-1 09:31

全世界都在学佩顿

xiandi957 发表于 2020-8-1 09:33

哈哈,不会用

大佬我知错了 发表于 2020-8-1 09:34

第一句话戳中我心了,但我是看云盘上{:1_907:}

NOOB玩家 发表于 2020-8-1 09:35

正在学py,受教了

wangjianjilei 发表于 2020-8-1 09:35

这代码有点迷

Leon19960120 发表于 2020-8-1 09:45

好家伙   谢谢分享

x800600 发表于 2020-8-1 09:54

高手利害了,学习下。
页: [1] 2 3 4
查看完整版本: M3U8视频合并 神速 只需5秒 就能看电影