栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

两个视频左右拼接成一个视频,且两个视频音频都保留

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

两个视频左右拼接成一个视频,且两个视频音频都保留

count 1 # count the number of pictures frame_interval 30 # video frame count interval frequency frame_interval_count 0 # loop read video frame while ret: ret, frame vc.read() # store operation every time f frame # if frame_interval_count % frame_interval 0: save_image(count, frame) print( num str(count) , frame: str(frame_interval_count)) count 1 frame_interval_count 1 # cv2.waitKey(1) vc.release()

这样获取了两个视频的所有图片帧 按照数字进行了编号。

2、合成新图组 opencv

现在需要把两个图组的每一个对应编号的图进行水平拼接 代码如下

# 
# 水平合成图组
import cv2
import numpy as np
# 按照两个图组的最小值 1 作为循环的最大值边界
for i in range(1,2225):
 img1 cv2.imread( images/video1/{}.jpg .format(i))
 img2 cv2.imread( images/video2/{}.jpg .format(i))
 # img1 cv2.resize(img1, (720, 1280))
 # img2 cv2.resize(img2, (720, 1280))
 # 核心代码
 image np.concatenate([img1, img2], axis 1)
 cv2.imwrite( images/result/{}.jpg .format(i), image)

完成这一步就已经得到了水平拼接的所有图片。

3、压缩新图组变成新视频 opencv

现在需要把图组压缩成视频 要考虑到原始视频的帧率 保持一致。

# 
# 压缩图片为视频
import cv2
import os
fourcc cv2.VideoWriter_fourcc(* XVID )
videoWriter cv2.VideoWriter( videos/new.mp4 , fourcc, 30, (1440,1280))
for i in range(1, 2225): #有多少张图片 从编号1到编号2224
 image_number i
 if not os.path.exists( images/result/{}.jpg .format(str(i))):
 continue
 img12 cv2.imread( images/result/ str(i) .jpg )
 #cv2.imshow( img , img12)
 #cv2.waitKey(1)
 videoWriter.write(img12)
videoWriter.release()

执行完上面的代码 已经获得了一个水平拼接好的视频 但是没有声音 下面来制作音频。

4、提取音频、合并音频 ffmpeg

使用ffmpeg对素材视频音频提取

ffmpeg -i videos/demo1.mp4 -acodec pcm_s16le -f s16le -ac 1 -ar 16000 -f wav audio/demo1.wav
ffmpeg -i videos/demo2.mp4 -acodec pcm_s16le -f s16le -ac 1 -ar 16000 -f wav audio/demo2.wav

至于ffmpeg这条命令的参数说明就不多说了 音频几个基本参数

下面开始合并音频

ffmpeg -y -i audio/demo1.wav -i audio/demo2.wav -filter_complex [0:0][1:0] amix inputs 2:duration longest -c:a libmp3lame audio/new.mp3

别问为什么2个wav为啥要合并成一个mp3 这个完全看心情。

5、将新音频压缩至新视频 ffmpeg

使用ffmpeg进行压缩

ffmpeg -i videos/new.mp4 -i audio/new.mp3 -map 0:v -map 1:a -c copy -shortest videos/final.mp4

得到最终视频。

这篇文章给的方法一定不是解决这个问题最优的方法 只是我对ffmpeg研究很浅 无法立马写出对应指令 如果有对ffmpeg研究很深的兄弟 可以留言提供那个最优解决方案。本篇文章 只是参考 希望给碰到相同问题的朋友提供一种解决方案。 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/267349.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号