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

python 音视频合并

目录

moviepy

ffmpeg命令合成:

添加字幕文件:

添加字幕文本:

pipeline添加字幕:


moviepy

python(opencv + pyaudio + moviepy)实现录制音视频文件并合并_ubuntu使用python的sounddevice+opencv录制音视频-CSDN博客

ffmpeg命令合成:

【实操】python opencv将图片合成视频,并插入音频_python 视频添加音乐-CSDN博客

添加字幕文件:

from moviepy.editor import *
import pysrtdef add_subtitles(video_path, subtitles_path, output_path):# 读取视频和字幕文件video = VideoFileClip(video_path)subs = pysrt.open(subtitles_path)# 创建一个函数,用于在视频中添加字幕def add_subtitle_frame(frame, t):subtitle = subs.at(t)  # 获取当前时间点的字幕txt = TextClip(subtitle.text, fontsize=24, color='white', stroke_width=2)  # 创建一个字幕文本片段txt = txt.set_position(('center', 'bottom')).set_duration(video.duration)  # 设置字幕位置和持续时间return CompositeVideoClip([frame, txt])  # 将字幕和视频帧合并# 将字幕添加到视频中的每一帧video = video.fl(add_subtitle_frame)# 保存添加字幕后的视频video.write_videofile(output_path)# 调用函数来给视频添加字幕
add_subtitles('video.mp4', 'subtitles.srt', 'output.mp4')

添加字幕文本:

import cv2
from moviepy.editor import *# 打开视频文件
video = VideoFileClip("input.mp4")# 获取视频的帧速率
fps = video.fps# 获取视频的宽度和高度
width, height = video.size# 初始化一个文本剪辑
text = TextClip("Hello, World!", fontsize=70, color="white", bg_color="black")# 将文本剪辑添加到视频中间
text = text.set_position(("center", "center")).set_duration(video.duration)# 将文本剪辑与视频合并
final = CompositeVideoClip([video, text])# 保存最终的视频文件
final.write_videofile("output.mp4", fps=fps)

pipeline添加字幕:

import cv2
import pandas as pd
from moviepy.editor import VideoFileClipdef pipeline(frame):try:cv2.putText(frame, str(next(dfi)[1].sentence), (0, 50), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 0), 3, cv2.LINE_AA, True)except StopIteration:pass# additional frame manipulationreturn framedfi = pd.read_csv('data.csv').iterrows()
video = VideoFileClip("vid.mp4")
out_video = video.fl_image(pipeline)
out_video.write_videofile("vidout.mp4", audio=True)

http://www.lryc.cn/news/264224.html

相关文章:

  • HttpUtils——助力高效网络通信
  • WAF绕过常见方法
  • SpringCloud微服务 【实用篇】| Docker镜像、容器、数据卷操作
  • OSPF面试总结
  • 【算法系列篇】递归、搜索和回溯(四)
  • Windows 系统下本地单机搭建 Redis(一主二从三哨兵)
  • 数据库访问被拒怎么操作?
  • Vue 2 生命周期即将结束
  • Python---端口和端口号的介绍
  • Electron训练笔记
  • 2023 英特尔On技术创新大会直播 | 窥探未来科技的边界
  • 机器学习之逻辑回归,一文掌握逻辑回归算法知识文集
  • H-ui前端框架 —— layer.js
  • 「Verilog学习笔记」游戏机计费程序
  • b站高可用架构 笔记
  • Android: Ubuntu下交叉环境编译常用调试工具demo for lspci命令(ARM设备)
  • 《2023全球IPv6支持度白皮书》近日发布
  • IDEA版SSM入门到实战(Maven+MyBatis+Spring+SpringMVC) -Spring的AOP前奏
  • 2023年度佳作:AIGC、AGI、GhatGPT 与人工智能大模型的创新与前景展望
  • 直播电商“去网红化”势在必行,AI数字人打造品牌专属IP
  • Java如何开发PC客户端(Windows,Mac,Linux)
  • 热红外图像非均匀校正方法
  • 性能压力测试--确保企业数字化业务稳健运行
  • 【Java】7种逻辑运算,你了解几种
  • 达梦到达梦的外部链接dblink(DM-DM DBLINK)
  • create-react-app 打包去掉 map文件
  • fdisk工具详解
  • 【蓝桥杯选拔赛真题81】Scratch旅游相册 第十五届蓝桥杯scratch图形化编程 少儿编程创意编程选拔赛真题解析
  • 水平居中、垂直居中、水平垂直居中
  • flex布局换行后出现间隙问题