Python+ffmpeg实现字幕视频合并

背景

我想给自己的视频添加字幕,但是市面上比较好的软件都不太对我口味,要么贵,要么就是学习版不给力。兜兜转转,我决定用多款开源软件分步实现,当然,也可以去白piao某些软件的字幕功能。

驱动力

bash 复制代码
ffmpeg -i video.mp4 -vf subtitles=srt_file.srt output.mp4

成果

于是我写了一个脚本

python 复制代码
import os


def start_question():
    print('\033[38;2;0;255;0m' + '请确认已下载ffmpeg,并已将其的bin文件夹添加至环境变量' + '\033[0m')
    print("您可以在此获取 https://www.gyan.dev/ffmpeg/builds/")
    confirm1 = input("Y/N?[Y]")
    if confirm1 == "N":
        input("[回车退出]")
        return False
    print('\033[38;2;0;255;0m' + '请确认您已知晓本程序的基本原理:' + '\033[0m')
    print('\033[38;2;255;0;0m' + 'ffmpeg -i video.mp4 -vf subtitles=srt_file.srt output.mp4' + '\033[0m')
    confirm2 = input("Y/N?[Y]")
    if confirm2 == "N":
        input("[回车退出]")
        return False
    return True


def out_mp4_file():
    print("您可以使用相对路径,三条路径均不能包含中文字符!")
    mp4_file = input('\033[36m' + "请输入mp4文件路径:" + '\033[0m')
    srt_file = input('\033[36m' + "请输入srt文件路径:" + '\033[0m')
    out_file = input('\033[36m' + "请输入输出文件路径:" + '\033[0m')
    if mp4_file and srt_file and out_file:
        os.system("ffmpeg -i {0} -vf subtitles={1} {2}".format(mp4_file, srt_file, out_file))
    else:
        print('\033[38;2;255;0;0m' + "您的输入好像有问题,请检查后再试" + '\033[0m')


flag = False

while True:
    if not flag:
        flag = start_question()
    if not flag:
        break
    out_mp4_file()
    confirm3 = input("[回车继续/q 退出]")
    if confirm3 == "q":
        break

值得注意的是,字幕脚本要自己写好,要能对应的上视频,至于对应不上的,没有尝试过。

核心是这个:

python 复制代码
os.system("ffmpeg -i {0} -vf subtitles={1} {2}".format(mp4_file, srt_file, out_file))

运行结果

毫无疑问失败了,不过错误也很经典------千万不要在路径中带有中文字符!

输出时会显示视频和字幕详情(命令行)。

当然,这种脚本是不可能为字幕添加特效的,要专门的剪辑软件才行。

相关推荐
叫我:松哥3 分钟前
基于卷积神经网络的静态手势语识别算法,在测试集上的识别准确率达到97.5%
人工智能·python·深度学习·神经网络·算法·cnn
不考研当牛马5 分钟前
Django 框架 深度学习 第二课程
后端·python·django
Dust-Chasing12 分钟前
Claude Code源码剖析 - ShellTool与真实动作
人工智能·python·ai
仙俊红21 分钟前
Java JUC:CompletableFuture 详解,多个任务并行执行并等待全部完成
java·python·spring
学习3人组24 分钟前
Python 评论朴素贝叶斯文本情感分析示例
人工智能·python·机器学习
用户3379225456828 分钟前
A2A Python SDK 源码架构解读:一个请求是如何被处理的
python
2401_8856651928 分钟前
从零搭建卷积神经网络:基于PyTorch实现MNIST手写数字分类
pytorch·python·神经网络·算法·机器学习·分类·cnn
SilentSamsara32 分钟前
MLflow 实验追踪与模型注册:从实验到生产的可复现工作流
开发语言·人工智能·pytorch·python·青少年编程
曲幽33 分钟前
写爬虫时用了代理还被封?Python 代理的那些隐藏坑,我替你踩明白了
python·http·https·proxy·socks·requests·socks5·proxies
装不满的克莱因瓶34 分钟前
掌握多头自注意力机制(Multi-Head Self-Attention)——Transformer 强大表达能力的核心来源
人工智能·python·深度学习·数学·ai·transformer