下载ffmpeg
1: 进入到ffmpeg官网: http://ffmpeg.org/download.html 选择对应的系统及版本号
2: 解压文件并将解压后的文件对应bin文件路径 添加到环境变量中
3: 查看ffmpeg是否生效
安装python对应的扩展包
pip install ffmpeg-python
备注: 需要将python安装目录下Lib文件夹的subprocess.py文件中大概656行中的 shell参数改为True
以下是视频转为图片的脚本示例:
import os
import shutil
def getImage(video_path):
base_path = os.path.join(os.path.join(os.getcwd(), "mp4"), video_path)
img_count = 1
crop_time = 0.0
try:
while crop_time <= 10.0: #转化10s的视频
os.system('D:\\ffmpeg\\bin\\ffmpeg -i %s -y -f image2 -ss %s %s.jpg'% (base_path, str(crop_time), str(img_count)))
img_count += 1
crop_time += 0.5 #每0.05秒截取一张照片
print('视频转化完成!!!')
except Exception as e:
print(e)
def save():
dir_s = os.path.join(os.getcwd(), "cur_image")
if os.path.exists(dir_s):
shutil.rmtree(dir_s)
os.mkdir(dir_s)
for root, dirs, tmps in os.walk(os.getcwd()):
for file in tmps:
if file.endswith("jpg") and os.path.exists(os.path.join(dir_s, file)) is False:
shutil.move(file, dir_s)
video_path = "test.mp4"
getImage(video_path)
save()
以下是图片转为视频的脚本示例:
import os
import cv2
from PIL import Image
import moviepy.editor as mov
def img_to_video(img_path, media_path):
"""
图片合成视频函数
@param img_path:
@param media_path:
@return:
"""
image_names = os.listdir(img_path)
image_names.sort(key=lambda n: int(n.split(".")[0]))
# 设置写入格式
fourcc = cv2.VideoWriter_fourcc("M", "P", "4", "V")
fps = 2 # 由于图片数目较少,这里设置的帧数比较低 0.1: 10s放完一张图片 5: 一秒放5张图片
# 读取第一个图片获取大小尺寸,因为需要转换成视频的图片大小尺寸是一样的
image = Image.open(os.path.join(img_path,image_names[0]))
# 初始化媒体写入对象
media_writer = cv2.VideoWriter(media_path, fourcc, fps, image.size)
# 遍历图片,将每张图片加入视频中
for image_name in image_names:
im = cv2.imread(os.path.join(img_path, image_name))
media_writer.write(im)
print(image_name, '合并完成')
# 释放媒体写入对象
media_writer.release()
print("无声视频写入完成")
img_path = r'E:\script\lx\cur_image'
media_path = r"E:\script\lx\mp4\save.mp4"
img_to_video(img_path, media_path)
以下是将视频添加背景音乐的脚本示例:
import moviepy.editor as mov
# 设置背景音乐
def set_music():
"""
将上面合成的视频添加背景音乐
@return:
"""
# 初始化视频文件对象
clip = mov.VideoClip(r"E:\script\lx\mp4\save.mp4")
# 从视频中提取一段背景音乐
audio = mov.AudioFileClip(r"E:\script\lx\mp4\save.mp4").subclip(0 , 23)
# 将背景音乐写入mp3文件
audio.write_audiofile(r"E:\script\lx\mp4\background.mp3")
# 向合成好的无声视频中添加背景音乐
clip = clip.set_audio(audio)
# 保存视频
clip.write_videofile(r"E:\script\lx\mp4\save.mp4")
set_music()