使用ass字幕文件通过ffmpeg给视频添加字幕的一些研究

Author:lihaiping1603@aliyun.com

Create:2019-09-04

最近对ffmpeg给视频文件添加字幕效果,进行了一些调试和研究,个人做个笔记,方便以后查找和使用。

将字幕加入到视频文件中,有两种方式:

1)第一种是将字幕以除了音视频之外的字幕流的形式添加到视频文件格式中,然后播放器在播放这个视频文件的时候,就可以显示相应的字幕效果了,该方式对于已经存在的视频文件,可以不用对音视频进行转码,速度和效率较高,但缺陷是对于一些格式不支持一些字幕编码格式,例如mp4不支持ass编码格式字幕流,而mkv支持。所以对于mkv格式的视频文件,我们可以利用如下的命令方式直接添加字幕流:

Ffmpeg -i video.mp4 -i subtitle.ass -c:v copy -c:a copy -c:s ass -y dest.mkv

2) 另外一种方式是将字幕流烧录到视频流中,即当成视频效果的一部分,通过字幕滤镜处理。优点是支持所有的视频文件格式,缺点是需要对原视频中的视频流进行转码处理,耗时耗硬件资源。例如将字幕文件烧录进mp4,可以利用如下的命令方式直接添加字幕:ffmpeg -i video.mp4 -vf ass=subtitle.ass -y dest.mp4

3) 同时这里介绍一下aas格式中的一些不是特别好理解的东西(相关基础资料可以参考:

aas文件格式介绍:

https://blog.csdn.net/winglyx/article/details/6791719;

https://www.douban.com/note/658520175/;

ass特效标签介绍:

https://aegi.vmoe.info/docs/3.2/ASS_Tags/;)。

针对字幕显示的位置,如何在ass中指定呢?这里我找到两个相关的字段\an和 \pos这两个字段:

这个是\an的介绍,我们假设我们是在一个虚拟的字幕输入框中输入我们的字幕,那么这个an的方式设置其实就是针对字幕输入框中当我们输入字幕的时候,这些字幕是如何在输入框中从什么位置开始展开的,也即以为字幕输入框的参考点设置,例如当我们设置为an5的时候,那么输入字幕的时候,参考点为输入框的中心,所以字幕增加的时候,就会在输入框向两边拓展展示。下面我们在确定pos和an的时候,字幕输入不同的字数的时候的截图如下:

所以an5,即输入框的参考点为输入框的中心位置。

接下来,我们再聊一下pos的问题:

pos指定的位置是基于原始视频画布的物理坐标,画布左上角为pos(0,0),右下角为pos(width/2,height/2);所以我们这里来看一下pos(0,0)的时候,改变an的参考点对齐方式,他的效果是怎么样的,看了,也许你就明白了。

An4_pos0_0:

An5_pos0_0:

An7_pos0_0:

这里更正一下:

上面的测试是在视频文件分辨率为968x544的分辨率的基础上,使用ass文件内容如下的测试结果。

ass文件内容:(注意script info中没有指定视频分辨率)

[Script Info]
; Script generated by Aegisub 3.2.2
; http://www.aegisub.org/
Title: YYeTs
; Original Script: YYeTs
Synch Point: 0
ScriptType: v4.00+
Timer: 100.0000
ScaledBorderAndShadow: no
YCbCr Matrix: TV.601
WrapStyle: 0[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,SourceHanSerifCN-Regular,20,&H00F83C4A,&H00000000,&H00442121,&H00000000,0,0,0,0,100,100,0,0,1,1,1,2,5,5,2,134[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:00.00,0:00:11.04,*Default,NTP,0,0,0,,{\an5\pos(0,0)}Hi,我是沐雨橙风

当修改ass中的script info的时候,会出现pos不同的情况,例如在script info中加入

PlayResX: 968
PlayResY: 544

指明视频的实际分辨率的时候,最右下角的坐标将变为pos(968,544),就不再是pos(484,272)了,至于在不指定的情况下,为啥会为1/2,暂时还没找到相关资料查证。

上述过程如果有误,请留言一起交流和更正整个过程。谢谢!

转载请注明出处:https://www.cnblogs.com/lihaiping/p/11460790.html

转载于:https://www.cnblogs.com/lihaiping/p/11460790.html

(原)使用ass字幕文件通过ffmpeg给视频添加字幕的一些研究相关推荐

  1. Windows下使用ffmpeg为视频添加字幕

    字幕分以下几种形式: 第一种是外挂字幕(软字幕),视频文件和字幕文件分离.当播放某视频文件时,会自动载入相同文件夹下同名的字幕文件,当然也可以用播放器(如:VLC media player)手动载入字 ...

  2. 安卓使用ffmpeg给视频添加字幕

    包含添加字幕能力的ffmpeg和相关so编译 需要下载的源码 https://github.com/tanersener/mobile-ffmpeg https://github.com/taners ...

  3. Mac OS中利用ffmpeg为视频添加字幕

    Mac系统下,利用ffmpeg加字幕 字幕类型 硬字幕,类似视频水印,作为视频的一部分内嵌了. 软字幕,封装字幕,也是内嵌到视频里,不过只是作为渲染,而且需要播放器支持才行. 外挂字幕,就是外部字幕文 ...

  4. ffmpeg 合并视频 添加字幕 bat命令

    首先将ffmpeg添加进系统环境变量 1.mp4转mkv for %%a in ("*.mp4") do ffmpeg -i %%~na.mp4 -vcodec copy -aco ...

  5. 通过FFMPEG给视频加字幕

    字幕简介 我们在观看电影或短视频时,一般在视频下发会出现字幕,有些视频还会配中英双语字幕.字幕可以帮助观看人更好的了解视频内容.字幕分为以下三种类型: 外挂字幕:独立的字幕文件,播放视频时把视频和字幕 ...

  6. Python根据字幕文件自动给视频添加字幕(通用版)

    功能描述: 根据给定的字幕文件中的字幕信息,自动给视频添加字幕,运行程序后输入要添加字幕的视频文件和对应的字幕文件路径即可.实际使用时不需要对程序做任何修改,只需要根据实际的视频内容来修改字幕文件就可 ...

  7. 怎么给视频添加字幕?三款视频字幕添加工具帮你轻松解决

    当我们在社交媒体上分享自己制作的视频时,可能会想要为视频添加字幕.因为这可以让观看视频的小伙伴更好地理解和欣赏我们的视频内容,还可以帮助提升我们的影响力和吸引力.但是手动添加字幕可能需要花费大量的时间 ...

  8. python之 ffmpeg给mp4视频添加字幕

    目录 ffmpeg给mp4视频加字幕 执行结果: ffmpeg给mp4视频加字幕 前期输入准备: mp4视频 外挂字幕:是一个单独的外部字幕文件,格式类型一般有srt.vtt.ass等等.播放视频时, ...

  9. Python自动化办公如何给视频添加字幕实战案例6

    发现一个问题,做了视频,没有字幕,大家听着我的8级川普肯定特难受. 于是有了下边的内容,决定给视频加上字幕,还是用Python来实现. 好像还可以,代码整理完毕 先看下一readme Python实战 ...

  10. python实现给视频添加字幕,并根据字幕添加语音

    文章目录 前言 一."pyttsx3"实现"文字到音频"的转换 二."pydub"处理音频 1.安装 2.测试 三."moviep ...

最新文章

  1. LeetCode 207. Course Schedule--有向图找环--面试算法题--DFS递归,拓扑排序迭代--Python
  2. 腾讯云视频流量服务器,腾讯云服务器有流量限制吗
  3. 刻骨铭心的startActivityForResult三级跳获得第三个Activity中返回的数据
  4. 【Android 逆向】Android 逆向通用工具开发 ( Windows 平台运行的控制台应用程序类型 | 编译 Windows 平台运行的 Android 逆向程序 )
  5. debian 安装 php 遇到的问题解决
  6. android多个水波球,android球形水波百分比控件代码
  7. 仿新浪微博实现ListBox下拉刷新和到底部自动加载
  8. python编程(fabric部署)
  9. 如何有逻辑的,简单清晰的回应问题
  10. 微信小程序自定义组件(Toast)
  11. 六石管理学:学习指教欢迎,刺探情报免了
  12. windows10应用商店加速方法
  13. 关于jxbrowser-7.19
  14. 西门子s7删除注册表,西门子S7200编程软件卸载步骤
  15. ENVI中FLAASH大气校正中的Atmosphere Model选项各含义
  16. win7无法设置时间更新服务器未响应,win7电脑提示系统时间设置有误请更新系统日期...
  17. Vue中变量前加...三个点什么意思
  18. ubuntu 下使用unixbench 这种benchmark 工具测试系统性能
  19. Image Histogram
  20. python——报数游戏

热门文章

  1. 有趣!让你的桌面独一无二——iWall for Mac2.1.1破解版可以交互的动态桌面壁纸!
  2. MySQL基础 增删改查练习
  3. Codesys中国官网下载中心
  4. 第3关:HTML表格:日常消费账单表格展示网页
  5. java 语音发声_单词打字练习java程序(发音、朗读)
  6. [设计模式]解释器模式
  7. ip模拟工具modify headers
  8. ESP8266 WIFI 模块连接OneNet测试
  9. 群晖系统安装相关文件分享
  10. 物联网开发语言的探讨