使用 ffmpeg 将视频画面拼接上自定义的字幕,生成字幕拼接图片 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
jifengg
V2EX    分享创造

使用 ffmpeg 将视频画面拼接上自定义的字幕,生成字幕拼接图片

  •  
  •   jifengg 2024-05-07 16:25:25 +08:00 1694 次点击
    这是一个创建于 524 天前的主题,其中的信息可能已经有所发展或是发生改变。

    网络上经常可以看到一些“截图某一张视频画面,并把后续字幕连续拼接在一起”的图片,可以快速传递视频内的内容。
    当然,这很容易造假。所以当你看到类似内容的时候,需要自行判断。
    这个脚本,就是用来实现这个功能的。需要说明的是,这个脚本不是为了造假而生的,仅仅是出于娱乐与交流的目的。

    先给出 GitHub 地址:https://github.com/jifengg/ffmpeg-script

    比如我用“功夫熊猫 4”里的某个画面,搭配我自己编写的一段话,生成:

    效果图

    脚本运行时间 2 秒左右。

    使用方式:

    node ffmpeg.subtitle.stack.js -i <video_file> -t <text_file> -font <font_file> [-o <output> ...] 

    支持的参数:

    -i <string> [必须]视频文件路径 -t <string> [必须]文本文件路径。用两个换行符分隔的字幕,支持用一个换行符实现字幕换行 -o <string> 生成的图片文件路径,默认:<输入视频文件名>_subtitle.jpg -y 是否覆盖已经存在的图片文件,默认:false -size <number> 生成的图片宽度,默认:400 -ss <number> 从视频的第几秒开始处理,格式同 ffmpeg 的-ss ,默认:0 -interval <number> 截取视频画面的两帧之间的间距,单位秒,默认:5 -sh <number> 要截取的字幕区域占画面高度的比例,取值 0.0 (不含) ~ 1.0 (含),默认:0.1666 -font <string> 字体文件路径,非 windows 下使用时必传,默认:c:/Windows/Fonts/msyh.ttc (微软雅黑) -h 显示这个帮助信息 -debug 是否开启 debug 模式,打印更详细的日志 

    注意文本文件的编写要求,格式如下:

    第一行 first line 第二行 second line 其它 others 

    使用一个空行(\n\n )来分隔两个文本信息,只间隔一个\n 的文本会以多行字幕的形式绘制到画面上。

    技术点主要是对 ffmpeg 各种滤镜的应用,有:

    4 条回复    2024-05-08 14:00:41 +08:00
    cheneydog
        1
    cheneydog  
       2024-05-07 16:33:43 +08:00
    有趣
    chenliang0571
        2
    chenliang0571  
       2024-05-07 20:30:43 +08:00
    文本字幕不能指定时间的嘛?
    jifengg
        3
    jifengg  
    OP
       2024-05-07 22:03:37 +08:00
    @chenliang0571 目前不能,如果有需要可以自行修改脚本添加。其实没太大必要,毕竟画面只截取那一小段
    1044523901
        4
    1044523901  
       2024-05-08 14:00:41 +08:00
    不错
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3670 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 05:06 PVG 13:06 LAX 22:06 JFK 01:06
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86