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

浅谈博星卓越网站建设网站开发技术的雏形 cgi

浅谈博星卓越网站建设,网站开发技术的雏形 cgi,wordpress 更新缓存,wordpress+海+主题在许多视频编辑任务中#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.w-s-a.com/news/102652/

相关文章:

  • 和各大网站做视频的工作高校网站群管理系统
  • 中国建设人才服务信息网是正规网站怎么注销自己名下的公司
  • 网站开发新型技术那些网站做任务领q币
  • 海口手机网站建设wordpress微支付宝
  • 做公司网站需要几天深圳自定义网站开发
  • 做网站学多长时间可以学会推广软件公司
  • 网络网站设计培训长沙建站模板大全
  • 站群搭建移动端处理器天梯图
  • 岳池发展建设集团有限公司门户网站湛江seo咨询
  • 手机网站工具关键词排名是什么意思
  • 游民星空是谁做的网站沈阳网站托管公司
  • 做网站搭建需要什么人vs2017移动网站开发
  • 购物网站开发需要什么技术怎么查看网站是否备案
  • 学做电商那个网站好网站建设投票主题
  • 中卫网站推广网络营销毕业设计做网站大小有什么要求
  • 做问卷网站义乌网站建设推广专家
  • 不会编程怎样建设网站昆明做网站哪家
  • 直播网站模板新营销平台电商网站
  • 建设部指定招标网站免费的企业查询软件
  • 做前端常用的网站及软件下载平台优化是什么意思
  • 企石镇仿做网站wordpress 网站白屏
  • 班级网站建设规划书专业定制网红变色杯
  • 上海网站设计公司电话甘肃路桥建设集团有限公司官方网站
  • 哈尔滨网站建设网站开发陕西省建设监理工程协会网站
  • 微信公众号电商网站开发wordpress增加论坛
  • 网站建设视频百度网盘下载免费wordpress搭建
  • 哈尔滨市网站建设公司汕头市公司网站建设平台
  • 东莞网站建设方案外包甘肃两学一做网站
  • 网站建设优化排名推广平面设计职业学校
  • 网后台的网站怎么做网站代理商