【脚本工具】视频抽帧、添加srt字幕朗读、添加背景音频

您所在的位置:网站首页 音频加字幕背景图 【脚本工具】视频抽帧、添加srt字幕朗读、添加背景音频

【脚本工具】视频抽帧、添加srt字幕朗读、添加背景音频

2024-07-16 19:02| 来源: 网络整理| 查看: 265

1.文章目录

看完本文章,你将能学会一下内容:

批量视频抽帧;添加srt字幕;添加srt配音;添加背景音乐;多视频片段合成一个新视频;

效果:

2.安装依赖

首先安装视频处理库opencv-python和moviepy,安装方式pip install xxx。

py文件顶部中导入(下文中使用到的函数将不在赘述导入过程):

from moviepy.editor import VideoFileClip, CompositeAudioClip, CompositeVideoClip, concatenate_videoclips from cv2 import VideoCapture, VideoWriter, VideoWriter_fourcc, CAP_PROP_FRAME_COUNT 2.视频抽帧

cv2.VideoCapture:

作用:用于从视频文件或摄像头捕获视频帧。

解释:这个函数允许你创建一个视频捕获对象,以便从指定的视频源中读取视频帧。你可以传递视频文件的路径或摄像头的索引作为参数,然后使用它来逐帧读取视频。

cv2.VideoWriter:

作用:用于将视频帧写入到一个新的视频文件中。

解释:这个函数允许你创建一个视频写入对象,以便将视频帧写入到一个新的视频文件中。你可以指定输出文件的名称、视频编解码器、帧速率、分辨率等参数。这在视频编辑和保存处理后的视频时非常有用。

cv2.VideoWriter_fourcc:

作用:用于指定视频编解码器的四字符码(FourCC)。

解释:FourCC 是一个4字节的代码,用于标识视频编解码器。不同的编解码器有不同的FourCC码。通过使用这个函数,你可以选择要在输出视频中使用的编解码器。

CAP_PROP_FRAME_COUNT:

作用:用于获取视频文件中的总帧数。

解释:CAP_PROP_FRAME_COUNT 是 cv2.VideoCapture 对象的一个属性,用于获取视频文件中的总帧数。这对于确定视频的时长以及循环播放视频等操作非常有用。

完整代码块:

# 单个视频抽帧 def video_extract_frame(video_path, out_path): # 打开视频文件 vc = VideoCapture(video_path) ... if vc.isOpened(): status, frame = vc.read() else: status = False print("视频没有打开成功!") vc.release() video.close() videoWriter.release() return False if status: for index in trange(total_frame, desc='抽帧进度'): # 读取视频帧并写入输出视频 。。。 videoWriter.write(frame) videoWriter.release() vc.release() video.close()

调用上面的抽帧函数:

video_extract_frame('./test.mp4', 'result.mp4')

如果有多个视频需要抽帧,只需要循环调用即可:

for index, video_file in enumerate(['1.mp4', '2.mp4', '3.mp4']): //取出链接中的视频文件名称,例如1,2,3 ... videoTool.video_extract_frame(video_file, out_path) print("\n第{}条, 视频抽帧已完成: {}".format(index + 1, out_path)) 3.添加srt字幕;

完整示例代码:

# 字幕片段 def generate_textclip(text, width, params, start, duration) -> TextClip: return TextClip( text, font=params.get('font'), align=params.get('align'), fontsize=params.get('fontsize'), ... ).set_position((params['location']['x'], params['location']['y'])).set_duration(duration).set_start(start) # 添加srt字幕 def add_srt(video_clip, params): if not (isfile(params["srt_path"]) and params["srt_path"].endswith('.srt')): print('字幕仅支持srt格式!') return [] else: # 获取视频的宽度和高度 v_width, v_height = video_clip.w, video_clip.h # 所有字幕剪辑 txts = [] content = tool.read_srt(params["srt_path"]) sequences = tool.get_sequences(content) ... srt_text = params["srt_text"] for index, line in enumerate(sequences): print("字幕生成进度:{}/{}".format(index, max_count)) if len(line)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3