向视频中插入指定文本python代码

videoAddText.py

import cv2

# 原始文件名
ori_file_name = "demo.mp4"                                         # 原文件名
# 运行后保存的文件名
result_file_name = "demo-result.mp4"
# 读取视频
ori_video = cv2.VideoCapture(ori_file_name)                        # 原视频
# 获取视频帧数
video_frame_count = ori_video.get(cv2.CAP_PROP_FRAME_COUNT)        # 帧数
# 获取视频帧率
video_fps = ori_video.get(cv2.CAP_PROP_FPS)                        # 帧率
print('原视频帧率' + str(video_fps))
# 获取视频时长
video_duration = video_frame_count / video_fps                     # 时长
# 获取原视频编码格式
video_fourcc = int(ori_video.get(cv2.CAP_PROP_FOURCC))

video_fourcc_str = "".join([chr((video_fourcc >> 8 * i) & 0xFF) for i in range(4)]) # 将编码格式转换为四个字符的字符串

print('原视频编码格式: ' + video_fourcc_str)             
# 设置写入视频的编码格式
out_fourcc = cv2.VideoWriter_fourcc(*"mp4v")
#out_fourcc = cv2.VideoWriter_fourcc(*video_fourcc_str)

# 获取视频宽度
frame_width = int(ori_video.get(cv2.CAP_PROP_FRAME_WIDTH))
# 获取视频高度
frame_height = int(ori_video.get(cv2.CAP_PROP_FRAME_HEIGHT))

# 
videoWriter = cv2.VideoWriter(result_file_name,            # 文件名  
                              out_fourcc,                  # 编码格式
                              video_fps,                   # 帧率
                              (frame_width, frame_height)) # (宽,高)
 
d_y = 25                                                     # 纵向间距
        
file = open("./demo.txt", "r")                               # 打开文本文件
text_content = file.read()                                   # 读取文本文件内容

frame_id = 0
while (ori_video.isOpened()):
    print(frame_id)
    frame_id = frame_id + 1
    read_success, frame = ori_video.read()                   # read_success:布尔值  frame:读到的一帧图像数据
    if read_success == True:                                 # 这帧存在
        # 文字坐标
        word_x = int(frame_width / 40)                          # 文字x
        word_y = int(frame_height / 20)                         # 文字y
        for line in text_content.split("\n"):                   # 分割文本内容并遍历每一行
            cv2.putText(frame,                                      # 帧
                        line,                                       # 文本内容
                        (word_x, word_y),                           # 坐标
                        cv2.FONT_HERSHEY_SIMPLEX,                   # 字体类型
                        1,                                          # 字体大小缩放因子
                        (55,255,155),                               # RGB
                        2)                                          # 线条粗细
            # 更新下一行的位置
            word_y += d_y
 
        # 写入视频
        videoWriter.write(frame)
    else:
        videoWriter.release()
        print(ori_file_name + ' processed successfully')
        file.close()
        break
#读取视频
out_video = cv2.VideoCapture(result_file_name)             # 输出的视频
# 获取视频帧数
out_video_frame_count = out_video.get(cv2.CAP_PROP_FRAME_COUNT)        # 帧数
# 获取视频帧率
out_video_fps = out_video.get(cv2.CAP_PROP_FPS)                        # 帧率
print('输出视频帧率' + str(out_video_fps))
# 获取视频时长
out_video_duration = out_video_frame_count / out_video_fps             # 时长
# 获取视频编码格式
out_fourcc = int(out_video.get(cv2.CAP_PROP_FOURCC))
out_fourcc_str = "".join([chr((out_fourcc >> 8 * i) & 0xFF) for i in range(4)]) # 将编码格式转换为四个字符的字符串
print('输出视频编码格式: ' + str(out_fourcc_str)) 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值