最新消息:20210917 已从crifan.com换到crifan.org

【已解决】把视频画面增加高度再合并字幕到指定位置

视频 crifan 499浏览 0评论
为了让视频在小程序、app等移动端播放,现在
已有视频和对应字幕
希望实现
增加视频画面的高度-》比如底部增加一部分区域
目的是:用于后续把字幕集成合并到视频中(的指定位置,比如上面原视频的底部)
对此,具体实现方法:
  • 最简单粗暴的:
    • 先把效果用代码在小程序上实现后
    • 找录屏软件录屏
  • 最好的是
    • 用软件或工具去批量处理
      • 暂时能想到的或许可行的方案
        • 用ffmpeg增大视频区域
          • 增加区域:背景色可以定义为透明或白色或黑色等
        • 用ffmpeg去合并字幕到指定位置
          • 之前一直:如果是ass字幕,还能指定其他额外属性
            • 字幕颜色,字体,背景色等
去准备好要处理的:
此视频是640×360=16:9的比例
现在需要去研究看看:
【已解决】ffmpeg保持视频宽度不变去增加扩大视频高度
然后再去合并字幕到视频位置的下面部分:
【已解决】ffmpeg合并字幕到视频下方指定位置
再去对于字幕本身的其他属性:字体大小,背景色,透明度等
ass中本身就有对应属性可以控制:
[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding

Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,20,20,10,0
去调整一些参数值,试试效果
字体类型
字体大小
边框
背景色
等等
然后参考自己之前的:
【已解决】用Aegisub字幕编辑器去调整字体大小和字幕背景半透明效果
发现
其实就是:
使用Aegisub软件,去微调即可
设置包括:
之前默认的ass文件中没有看到的属性
对齐方式:默认此处是2(底部居中?),还可以改为 1-9中值
然后去调整出自己要的效果即可。
以及具体用法可以参考:
ASS Tags – Aegisub Manual
此处就不再赘述。
【总结】
此处,已有:
  • mp4视频
  • srt字幕
需要:
  • 把视频扩大:左右宽度都加一点,底部高度扩大一点
  • 把字幕嵌入式视频中
    • 且能指定字幕的位置
    • 以及设置字幕文字其他属性:字体类型,字体大小,颜色,边框,背景色等
处理过程和逻辑:
【扩大视频】
ffmpeg -i input/5d41d82f52247ce73d40475b.mp4 -vf "pad=width=iw+60:height=ih+150:x=-1:y=50:color='LawnGreen@0.5" output/5d41d82f52247ce73d40475b_upDownAllPad_LawnGreen.mp4
详见:
【已解决】ffmpeg保持视频宽度不变去增加扩大视频高度
【嵌入字幕】
先把srt转换成ass
ffmpeg -i input/5d41d82f52247ce73d40475b.srt output/5d41d82f52247ce73d40475b.ass
以便于能指定字幕位置和字幕文字的各种属性
再去嵌入ass字幕,且指定位置:
ffmpeg -i input/5d41d82f52247ce73d40475b_extendedAll.mp4 -vf "ass=input/5d41d82f52247ce73d40475b_cfgPosition.ass" output/5d41d82f52247ce73d40475b_addedAss_marginV10LR20.mp4
其中字幕文件
5d41d82f52247ce73d40475b_cfgPosition.ass
中的配置是:
[Script Info]
; Script generated by FFmpeg/Lavc58.54.100
ScriptType: v4.00+
PlayResX: 384
PlayResY: 288

[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,20,20,10,0

[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:02.68,0:00:09.16,Default,,0,0,0,,I'm a policeman in the town. All day long,I walk around!\N我是镇上的警察 整天都在巡视
...
核心配置就这一句:
Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,20,20,10,0
其中:
  • Alignment:默认为2,字幕位置是底部居中对齐
  • MarginL和MarginR:20,左右间距20
  • MarginV:底部向上间距10
另:
字幕文字的其他方面的效果,可以通过:
Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour
等属性去设置
具体设置成什么值,以及效果如何,可借助于软件Aegisub去设置和预览
详见:
【已解决】用Aegisub字幕编辑器去调整字体大小和字幕背景半透明效果
【后记】
后来说是,其实希望的是:
上图中的效果:
播放视频时,同时能显示
  • 当前字幕
    • 还要高亮显示
  • 以及之前和之后的字幕
但是这种效果:
很明显,很复杂
而ffmpeg无法实现
只能是:用小程序中画页面,然后录屏了

转载请注明:在路上 » 【已解决】把视频画面增加高度再合并字幕到指定位置

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
91 queries in 0.177 seconds, using 23.34MB memory