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

Python+ffmpeg实现字幕视频合并

背景

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

驱动力

ffmpeg -i video.mp4 -vf subtitles=srt_file.srt output.mp4

d6bebf4be0064ef4be71d80607988284.png

成果

于是我写了一个脚本 

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

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

 核心是这个:

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

运行结果

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

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

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

 

 

相关文章:

  • 【Android 14源码分析】Activity启动流程-3
  • 智能工厂的软件设计 【三ji】公共逻辑语言映射到祖传代码( 元级)中为“Program”规划了三层置标架构,即“Program”的标准通用置标语言
  • 【前沿 热点 顶会】NIPS 2024中目标检测有关的论文
  • XHTML 简介
  • 【Mac】和【安卓手机】 通过有线方式实现投屏
  • 数据结构之串
  • 王者农药更新版
  • [C#]使用纯opencvsharp部署yolov11-onnx图像分类模型
  • 基于深度学习的乳腺癌分类识别与诊断系统
  • macos 中使用macport安装,配置,切换多版本php,使用port 安装php扩展方法总结
  • cherry-markdown开源markdown组件详细使用教程
  • 一、Python(介绍、环境搭建)
  • Excel基础:电子表格Excel的使用技巧合集
  • 文件包含漏洞
  • 基于 STM32F407 的 SPI Flash下载算法
  • requests 中data=xxx、json=xxx、params=xxx 分别什么时候用
  • Linux·进程概念(下)
  • 【PostgreSQL】入门篇——介绍表的创建、主键、外键、唯一约束和检查约束的概念及其应用
  • vue2接入高德地图实现折线绘制、起始点标记和轨迹打点的完整功能(提供Gitee源码)
  • VPN简述
  • 《新时代的中国国家安全》白皮书(全文)
  • 法治日报:炮制师生日常剧本,校园怎么成了短视频流量秀场?
  • 4月证券私募产品备案量创23个月新高,股票策略占比超六成
  • 图集|俄罗斯举行纪念苏联伟大卫国战争胜利80周年阅兵式
  • 上海证监局规范辖区私募经营运作,6月15日前完成自评自纠
  • 长期对组织隐瞒真实年龄,广元市城发集团原董事韩治成被双开