在手机上,或者电脑端,有时候我们看一个视频,网站为了保证页面流畅,总是以 hls 直播视频流的方式将一整段视频切割成一小段一小段的返回给前端。
而我们如果有下载的需求,并且通过该整个视频扒下来,会发现获取到的都是一个个小的视频片段(很多小电影网站都是如此)。
作为一个强迫症患者,我会希望将其整合成一个完整的视频,这是需求。
在网上搜索了一些资料之后,于是确认了使用 moviepy 这个第三方库作为我们的工具。
以下是使用步骤和方法:
注意: 如下操作皆是在 Ubuntu 18.0上操作。
1、安装依赖和 ffmpeg
我们用到的第三方库是 moviepy:
sudo pip3 install moviepy
moviepy 在后台还会调用 ffmpeg 这个东西。
ffmpeg 这玩意儿是个好东西,跟 vlc 一样好,都是用来处理视频的软件,感兴趣的可以多了解一下,这里我们只是需要安装一下:
sudo apt install ffmpeg
2、合并视频
假设我们有一个视频列表 video_list,内容是一个个的视频文件地址
from moviepy.editor import *
video_list = ['1.ts', '2.ts', '3.ts']
L = []
for video_path in video_list:
video = VideoFileClip(video_path)
L.append(video)
final_clip = concatenate_videoclips(L)
final_clip.to_videofile('./final.mp4', fps= 24, remove_temp=True)
其中 ‘./final.mp4’ 是最终生成的文件,
fps 是每秒钟传输的帧数,比如人眼一般一秒钟能看到的帧数大致就是 24,
而程序最终会生成一个临时文件,remove_temp=True 指的就是将这个临时文件删除。