opencv+python+ffmpeg为视频添加文字滚动动画效果代码
代码语言:python
所属分类:其他
代码描述:opencv+python+ffmpeg为视频添加文字滚动动画效果代码,先分解每一帧成图片,然后在每一帧计算动画出现的文字位置,最后ffmpeg合成完整视频。
代码标签: opencv python ffmpeg 视频 添加 文字 滚动 动画
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
#!/usr/local/python3/bin/python3 # -*- coding: utf-8 -* #pip install python-opencv import cv2 import numpy as np import subprocess import os import sys def add_text_animation(video_path, output_path, text): # 打开视频 cap = cv2.VideoCapture(video_path) # 获取视频属性 width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) fps = cap.get(cv2.CAP_PROP_FPS) # 检查 fps 是否有效 if fps <= 0: fps = 30 # 如果无法获取有效的 fps,使用默认值 30 print(f"视频属性: 宽度={width}, 高度={height}, FPS={fps}") # 创建临时目录来存储帧 temp_dir = 'temp_frames' os.makedirs(temp_dir, exist_ok=True) # 设置初始文字位置 text_position = [width, height // 2] frame_count = 0 while cap.isOpened(): ret, frame = cap.read() if not ret: break # 更新文字位置 text_position[0] -= 5 # 每帧向左移动5个像素 if text_position[0] < -len(text) * 20: # 当文字完全移出画面时 text_position[0] = width # 重置到右侧 # 在帧上添加文字 cv2.putText(frame, text, tuple(text_position), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 2, cv2.LINE_AA) # 保存帧为图像文件 cv2.imwrite(f'{temp_dir}/frame_{frame_count:06d}.png', frame) frame_count += 1 if frame_count % 100 == 0: print(f"已处理 {frame_count} 帧") # 释放资源 cap.release() cv2.destroyAllWindows() print(f"总共处理的帧数: {frame_count}") # 检查是否有帧被处理 if frame_count == 0: print("没有处理到任何帧。请检查输入视频文件。") return print("正在使用FFmpeg处理最终输出...").........完整代码请登录后点击上方下载按钮下载查看
网友评论0