【Python音视频技术】玩AI视频创作引发写Python音视频技术系列文章1---视频添加字幕

最近对视频创作感兴趣, 详情见之前写的几篇文章。

【AI+应用】模仿爆款视频二次创作短视频操作步骤

【人工智能】AI数字人视频演示

【人工智能】AI视频二次创作演示

作为程序员出身的我,看到一些功能, 我都有猎奇的习惯, 想着自己用什么技术来实现它呢。

处理音视频,大家很容易想到大名鼎鼎的ffmpeg。FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。它提供了录制、转换以及流化音视频的完整解决方案。 2013年那时候做流媒体直播的时候我就有所了解。既然我这里选择python,这里介绍2个python库,一个是ffmpeg-python , 一个是moviepy。

这里以mac为例, windows或linux思路类似。

一、ffmpeg-python, python代码来操作ffmpeg

1、ffmpeg下载地址: https://ffmpeg.org//download.html , 选择自己合适的版本

2、下载解压后,vi /etc/profile修改环境变量,

export PATH=$PATH:/Users/xxxx/software/ffmpeg/bin

3、pip install ffmpeg-python

二、moviePy,是一个用于视频编辑Python库:切割、拼接、标题插入,视频合成,视频处理和自定义效果的创造。

1、必须先安装imagemagick , brew install imagemagick

这个安装比较扯,安装各种缺包,我秉持缺少安装什么 brew install xx的原则,所幸全部安装成功了, 主要是因为我之前已经换成国内源了。

如果你安装不成功,可以尝试换一下中科院的源。https://mirrors.ustc.edu.cn/brew.git

2、pip3 install moviepy

三、这里给一个 moviepy视频添加字幕的简单demo, 网上摘录的代码。

复制代码
from moviepy.editor import CompositeVideoClip, VideoFileClipfrom moviepy.video.VideoClip import TextClipimport osimport argparse
# Define the base directorybase_dir = os.path.dirname(os.path.abspath(__file__))
# Define CLI argumentsparser = argparse.ArgumentParser()parser.add_argument(    '-f',    type=str,    help='The file path of target video. '    + 'ex. /Users/lwj/video/example.mp4.\nDefault value is "demo.mp4"',    default=base_dir + '/demo.mp4')parser.add_argument(    '-t',    type=str,    help='The text you want to add to video top. '    + 'ex. "Hellow Video"',    default='This is demo example')parser.add_argument(    '-s',    type=int,    help='The font size of video watermark. '    + 'ex. 30',    default='30')parser.add_argument(    '-n',    type=str,    help='The new file name.\n'    + 'Default value is {current file name}_title.mp4',)
# Define Variableargs = parser.parse_args()video_path = args.fvideo_watermark = args.tfont_size = args.s
# Check whether or not the input video path is valid. If not, ask user to input again.while True:    try:        video = VideoFileClip(video_path)        print('video resultion: ', video.size)        break    except Exception:        print(            'Directory or file is not valid,'            + ' please enter a valid file directory ...')        video_path = str(input('Enter the video path again (absolute path without space): '))
origin_file = (lambda x: x.split('/')[-1])(video_path)
if args.n:    new_file = args.nelse:    new_file = f'{origin_file.split(".")[0]}_title.{origin_file.split(".")[1]}'

def add_text(content, font_size):    '''    add text on the top of video stream    '''    # txt_clip = (TextClip(content, fontsize=font_size, color='white')    #             .set_position('top')    #             .set_duration(video.duration))    txt_clip = (TextClip(content, fontsize=font_size, color='red')                .set_position('bottom')                .set_duration(1))    result = CompositeVideoClip([video, txt_clip])    result.write_videofile(new_file)

def main():    add_text(video_watermark, font_size)

if __name__ == '__main__':    main()

命令执行: python3 video-textadder.py -f demo.mp4 -t "hello world"

改一下字幕位置、颜色。

未完待续,后续找个时间继续水。 自己不止更新技术类文章, 如果想了解更多,可以关注同名公众号《子晓聊技术》

相关推荐
minstbe26 分钟前
IC设计私有化AI助手实战:基于Docker+OpenCode+Ollama的数字前端综合增强方案(进阶版)
人工智能·python·语言模型·llama
GinoInterpreter1 小时前
什么是翻译的去中心化?
人工智能·自然语言处理·去中心化·区块链·机器翻译·机器翻译模型·机器翻译引擎
zyq99101_12 小时前
优化二分查找:前缀和降复杂度
数据结构·python·蓝桥杯
qyzm2 小时前
天梯赛练习(3月13日)
开发语言·数据结构·python·算法·贪心算法
码农小白AI2 小时前
IACheck AI报告文档审核:高端制造合规新助力,保障标准引用报告质量
大数据·人工智能·制造
_YiFei2 小时前
哪个降论文AI率工具最好用?
人工智能·深度学习·神经网络
放下华子我只抽RuiKe53 小时前
机器学习全景指南-直觉篇——基于距离的 K-近邻 (KNN) 算法
人工智能·gpt·算法·机器学习·语言模型·chatgpt·ai编程
kisshuan123963 小时前
[特殊字符]【深度学习】DA3METRIC-LARGE单目深度估计算法详解
人工智能·深度学习·算法
sali-tec3 小时前
C# 基于OpenCv的视觉工作流-章33-Blod分析
图像处理·人工智能·opencv·算法·计算机视觉
老星*3 小时前
Trae-cn一句话安装OpenClaw:AI智能体框架快速部署指南
人工智能·编辑器