本文主要介绍如何将多个视频画面合并到一个视频中,使得合成后的视频画面是原视频的并排画面。
文章目录
- 场景描述
- 准备工作
- 处理步骤
- 源代码
- 处理效果展示
场景描述
在某些音视频剪辑的场景下我们希望一个视频画面显示多个子画面,比如:
- 乐器演奏视频希望显示多个乐器演奏的画面
- 单一乐器演奏时希望显示多个角度的画面
- 常见的新闻联播连线外景记者时,左边是演播室右边是外景画面
- ……
假设我们有如下两个视频,一个视频介绍企鹅,另一个视频介绍帕拉斯猫:
我们希望得到一个将两个视频并排播放的视频,(手动拼接)如下:
准备工作
- 处理音视频的时候,可以使用强大的
ffmpeg
工具完成各种各样的操作 python
中可以使用底层封装了ffmpeg
的第三方库moviepy
来快速完成一些常见的音视频处理
所以,我们需要安装ffmpeg(moviepy需要使用),moviepy两个库,
ffmpeg
可以在官网安装,并且将安装磁盘:\安装目录\ffmpeg\bin
放到系统环境变量中(Win键+S然后搜索"编辑系统环境变量")moviepy
可以通过pip命令安装:pip install moviepy
处理步骤
要完成「将两个视频画面并排(同时音频也混合)」的任务,需要分解成以下步骤:
- 让程序读取视频数据(这样程序才能对视频进行后续操作)
- 将两个视频的画面直接并排在一起,合成一个画面
- 将两个视频的音频混合成一个音频
- 将合并后的音频附加到合并后的画面上
- 将画面的比例缩小成原本的一半(因为拼接是按原比例拼接的,所以如果希望合并之后的视频尺寸与原本一致,就需要按照比例缩小)
- 导出视频到电脑磁盘中
然后,我们将步骤对应到python现成的第三方库moviepy的API上,如下:
- (导入我们要用的moviepy):
from moviepy.editor import *
- 读取视频数据:
video_1 = VideoFileClip("D:/企鹅.mp4")
video_2 = VideoFileClip("D:/帕拉斯猫.mp4")
- 将两个视频的画面并排:
video = clips_array([ [video_1, video_2] ])
[ [video_1, video_2] ]
是一排两列
的意思- 如果是
两排一列
,则是[ [video_1], [video_2] ]
- 我们也可以排出一个九宫格(3×3):
[ [video_1, video_2, video_3], [video_4, video_5, video_6], [video_7, video_8, video_9] ]
- 将两个视频的音频混合成一个音频(用
video.audio
可以获取video的音频):mix_audio = CompositeAudioClip([video_1.audio, video_2.audio])
- 将合并后的音频附加到合并后的画面上:
video.set_audio(mix_audio)
- 将画面的比例缩小成原本的一半:
- 原视频的比例可以通过
video.size
获取到一个结构为(720, 600)
的宽高尺寸数据 - 如果两个原视频尺寸本身不一样的话,可以先分别调整为期望的尺寸之后再合并
- 如果两个视频尺寸一致,可以像上面一样合并之后,将合并后的视频比例缩小成当前尺寸的一半:
video = video.resize(width=video.size[0] / 2) # 因为是一排两列,所以只需要将宽缩小成一半
- 原视频的比例可以通过
- 导出视频到电脑磁盘中:
video.write_videofile("D:/合成的视频.mp4")
源代码
from moviepy.editor import *
video_1 = VideoFileClip("D:/test_1.mp4")
video_2 = VideoFileClip("D:/test_2.mp4")
video = clips_array([[video_1, video_2]])
mix_audio = CompositeAudioClip([video_1.audio, video_2.audio])
video.set_audio(mix_audio)
video = video.resize(width=video.size[0] / 2) # 因为是一排两列,所以只需要将宽缩小成一半
video.write_videofile("D:/合成的视频.mp4")
处理效果展示
快去试试吧,有任何问题可以在评论区留言~
好书推荐:
- 流畅的python
- Python编程 从入门到实践 第2版
- Python数据结构与算法分析 第2版
好课推荐:
- 零基础学python
- python核心技术与实战
- python自动化办公实战
写文不易,如果对你有帮助的话,来一波点赞、收藏、关注吧~👇