当前位置: 首页 > news >正文

做类似电驴网站广州网站建设系统

做类似电驴网站,广州网站建设系统,建设网站比较好公司吗,如何新做的网站让百度快速收录在许多视频编辑任务中#xff0c;我们常常需要将视频和音频进行对齐#xff0c;并添加字幕。本文将详细介绍如何使用Python实现这一功能#xff0c;并在视频中添加中文字幕。我们将使用OpenCV处理视频帧#xff0c;使用MoviePy处理音频和视频的合成#xff0c;使用PIL库绘…在许多视频编辑任务中我们常常需要将视频和音频进行对齐并添加字幕。本文将详细介绍如何使用Python实现这一功能并在视频中添加中文字幕。我们将使用OpenCV处理视频帧使用MoviePy处理音频和视频的合成使用PIL库绘制中文字幕。 环境设置 首先我们需要安装必要的库。可以使用以下命令来安装它们 pip install opencv-python moviepy Pillow准备工作 准备音频和视频文件确保你有需要对齐的音频和视频文件。下载支持中文的字体文件例如SimHei.ttf并将其保存到合适的位置。在示例中我们使用NotoSansCJKsc-Regular.ttf。 实现代码 以下是实现音视频对齐并添加中文字幕的完整Python代码。你可以将这段代码保存为一个Python文件并根据需要进行调用。 import cv2 import numpy as np from moviepy.editor import AudioFileClip, VideoFileClip from pydub import AudioSegment from PIL import Image, ImageDraw, ImageFont import tempfile import os import re def replace_punctuation_with_at(input_string):# 使用正则表达式匹配所有标点符号并替换为 result re.sub(r[^\w\s], , input_string)return resultdef add_chinese_subtitle_to_frame(frame, subtitle_text, position, font_path, font_size, font_color):# 将OpenCV图像转换为PIL图像img_pil Image.fromarray(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB))draw ImageDraw.Draw(img_pil)font ImageFont.truetype(font_path, font_size)# 获取字幕文本的宽度和高度text_bbox draw.textbbox((0, 0), subtitle_text, fontfont)text_width text_bbox[2] - text_bbox[0]text_height text_bbox[3] - text_bbox[1]# 计算字幕的放置位置x position[0] - text_width // 2y position[1] - text_height // 2# 在PIL图像上添加字幕draw.text((x, y), subtitle_text, fontfont, fillfont_color)# 将PIL图像转换回OpenCV图像frame cv2.cvtColor(np.array(img_pil), cv2.COLOR_RGB2BGR)return framedef sync_audio_video_add_subtitle(audio_path, video_path, output_path, subtitle_text, font_path, font_size24, font_color(255, 255, 255), subtitle_bottom_margin30, audio_volume1.0):# 加载音频文件并调整音量original_audio AudioSegment.from_file(audio_path)original_audio original_audio (audio_volume * 10 - 10) # 调整音量silence AudioSegment.silent(duration500) # 0.5秒的静音audio_with_silence silence original_audio silence# 创建临时文件以保存修改后的音频temp_audio_path os.path.join(tempfile.gettempdir(), temp_audio.mp3)audio_with_silence.export(temp_audio_path, formatmp3)# 加载修改后的音频文件audio_clip AudioFileClip(temp_audio_path)audio_duration audio_clip.duration# 加载视频文件cap cv2.VideoCapture(video_path)fps cap.get(cv2.CAP_PROP_FPS)frame_count int(cap.get(cv2.CAP_PROP_FRAME_COUNT))video_duration frame_count / fps# 计算新的视频帧率new_fps fps * (video_duration / audio_duration)# 获取视频尺寸width int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))height int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))# 创建临时文件以存储中间视频结果temp_video_path os.path.join(tempfile.gettempdir(), temp_video.mp4)# 创建VideoWriter对象out cv2.VideoWriter(temp_video_path, cv2.VideoWriter_fourcc(*mp4v), new_fps, (width, height))# 分批读取和写入视频帧并添加字幕subtitle_text replace_punctuation_with_at(subtitle_text)subtitle_text_list [text for text in subtitle_text.split() if text]print(subtitle_text_list)subtitles_per_frame frame_count // len(subtitle_text_list)current_subtitle_index 0for frame_idx in range(frame_count):ret, frame cap.read()if not ret:break# 添加当前字幕到帧if frame_idx // subtitles_per_frame current_subtitle_index and current_subtitle_index len(subtitle_text_list):frame add_chinese_subtitle_to_frame(frame, subtitle_text_list[current_subtitle_index], (width // 2, height - subtitle_bottom_margin), font_path, font_size, font_color)if frame_idx // subtitles_per_frame current_subtitle_index:current_subtitle_index 1out.write(frame)cap.release()out.release()# 使用MoviePy将音频和调整后的视频合并video_clip VideoFileClip(temp_video_path).set_duration(audio_duration)final_clip video_clip.set_audio(audio_clip)# Trim the last 0.3 secondsfinal_clip final_clip.subclip(0, final_clip.duration - 0.3)# Write the final video filefinal_clip.write_videofile(output_path, codeclibx264, audio_codecaac)# Close the clips to release the filefinal_clip.close()video_clip.close()audio_clip.close()# 删除临时文件os.remove(temp_audio_path)os.remove(temp_video_path)if __name__ __main__:# 示例用法audio_path rC:\Users\60568\Pictures\create\屈原\mp3\00000002.mp3video_path rC:\Users\60568\Pictures\create\屈原\mp4\03.mp4subtitle_text然而屈原的直言进谏,引来了朝中权臣的嫉恨,他成为了政治斗争的牺牲品。output_path synced_video.mp4sync_audio_video_add_subtitle(audio_path, video_path, output_path,subtitle_textsubtitle_text,font_path./NotoSansCJKsc-Regular.ttf,font_size40, # 设置字体大小font_color(255, 255, 255), # 设置字体颜色subtitle_bottom_margin80, # 设置字幕底部的位置audio_volume2) # 调整音频音量1.0为原始音量1.5为增加50%音量 代码说明 add_chinese_subtitle_to_frame: 这个函数将字幕添加到给定的帧上。它使用PIL库来绘制字幕然后将图像转换回OpenCV格式。sync_audio_video_add_subtitle: 这个函数处理音频和视频的对齐并将字幕添加到每一帧上。最终它将处理好的视频和音频合并并生成输出文件。 保证音频长度不变调整视频长度 在此代码中我们特别强调了保证音频长度不变通过调整视频的帧率来匹配音频长度。这是通过计算新的帧率 new_fps 实现的 new_fps fps * (video_duration / audio_duration)调整参数 你可以通过调整以下参数来修改字幕的显示效果和位置 font_size: 字体大小。font_color: 字体颜色。subtitle_bottom_margin: 字幕距离视频底部的距离。 运行示例 你可以使用提供的示例用法来运行代码只需将audio_path、video_path和font_path替换为你自己的文件路径即可。 通过这个教程你应该能够使用Python轻松地实现视频和音频的对齐并在视频中添加中文字幕。如果你有任何问题或建议请在评论区留言
http://www.eeditor.cn/news/126151/

相关文章:

  • 四川网站建设 四川冠辰科技推广普通话的重要意义
  • dedecms网站地图怎么做网站维护技术
  • 微网站成功案例近期莱芜命案
  • 个人介绍微电影网站模板wordpress空间免费下载
  • 游戏开发网站建设DW做的网站加载慢
  • 网站到期时间查询营销型网站重要特点是
  • 自己做企业网站服务器中企动力邮箱登录网址
  • 淘客如何做网站推广网站开发哈尔滨网站开发公司电话
  • 烟台网站制作厂家电话公司网站模板 网盘下载
  • 网站维护更新费用深圳做步步高的公司网站
  • 自己做ppt网站吗网站建设开发的目的
  • 怎么做自己网站望牛墩网站建设
  • 零基础网站建设教学视频东莞推广系统哪家强
  • 自主建设公司网站网站建设叫什么软件
  • 网站1g空间多大海外医疗兼职网站建设
  • 金山专业网站建设网站建站的书籍
  • 青岛seo做的好的网站网站开发 鲁山
  • 网站创建怎么做做直播网站需要手续
  • 安全的集团网站建设网站建设 app开发
  • 秦皇岛网站群发关键词wordpress 加载 蛮
  • 苏州大学网站建设目标住房和城乡建设网站方案
  • 雄安移动网站建设网站设计风格有哪几种
  • 厂西建设厅网站龙岗坑梓网站建设
  • 网站系统建设费用wordpress替换域名
  • 株洲网站建设联系方式杭州 建设网站制作
  • 新乐市做网站免费留电话号码的广告
  • 福州建设网站公司河北省建设工程招标投标协会网站
  • 免费做网站网站网站建设伍金手指下拉2
  • 河北唐山建设工程协会网站长沙58同城招聘信息
  • 怎么做外贸网站seo在网站上做宣传属于广告费用吗