如何将本地下载的切片电影进行合成一个视频

avatar
作者
猴君
阅读量:0

合成后的时长1:41

没有合成前是50个电影切片

注明:电影切片不是真实的切片名称而是自定义从0-50的数字

import requests # with open("电影.m3u8","r") as f: #     n=0 #     for line in f: #         if line.startswith("#"): #             continue #         line=line.rstrip('\n') #         url = 'https://m3u8i.vodfile.m1905.com/202408031023/c223719502f4f3e2d4f49e3e5118cab5/movie/2019/07/17/m201907170JDB59JXFDRK2YS3/'+line #         res1=requests.get(url) #         open(f'ts/{n}.ts','wb').write(res1.content) #         n += 1

以上代码是打开本地m3u8文件,按行对文件内容进行数据处理,去掉带#开头的,还是对每个视频地址进行去掉末尾的\n,用到rstrip(),得把切片地址补全,然后请求得到响应把内容保存到本地ts文件夹下。

import os  # os.system(f"copy /b {s} dianyi.mp4") 个别视频讲解在window中可以利用os模块中的system,发现不能执行。 对于MAC os.system(f"cat  {s} > dianyi.mp4") 因为没有平板没有验证 这里设计到{s}中将视频地址连接 s=" ".john(list)   s="+".join(list)  #合成视频用到moviepy 中的VideoFileClip,concatenate_videoclips  from moviepy.editor import VideoFileClip,concatenate_videoclips #定义了一个合成的函数 def merge_ts():     list = []#定义一个空列表存放地址     with open("电影.m3u8","r",encoding="utf-8") as f:         i=0         for line in f:             if line.startswith("#"):                 continue             list.append(f"ts/{i}.ts")             i += 1             if i==50: #因为下载了50个切片到50结束循环                 break         #          # os.system(f"copy /b {s} dianyi.mp4")         # print(s)         print(list)         clips=[VideoFileClip(path) for path in list]         fina_clip=concatenate_videoclips(clips)         fina_clip.write_videofile("第.mp4")         print(“合成成功”)
if __name__=="__main__":         merge_ts() 
   

    广告一刻

    为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!