• Subtitle-ass-srt


    1. ass
    	1.1 ssa-ass
    	1.2 脚本说明
    		1.2.1 头部
    		1.2.2 样式定义
    		1.2.3 主体
    		1.2.4 注意事项
    	1.3 双语字幕
    2. srt
    	2.1 文件格式
    	2.2 样式
    	2.3 位置
    3. 小结
    	3.1 列出支持的格式
    	3.2 srt-ass
    	3.3. sbv-srt
    4 字幕操作
    	4.1 软字幕(推荐)
    		4.1.1 提取字幕流
    		4.1.2 添加字幕流
    		4.1.3 注意
    	4.2. 硬字幕(不推荐)
    5. 相关链接
    

    1. ass

    1.1 ssa-ass

    • SubStation Alpha(或 Sub Station Alpha),简称SSA,是由 CS Low(亦作 Kotus)创建、比传统字幕(如SRT)更加强大先进的字幕文件格式。该格式在Windows平台上可以经播放器由VSFilter渲染进行播放。这是一款广受欢迎且已停止开发的字幕编辑制作工具。
    • 而Advanced SubStation Alpha(ASS)是一种比SSA更先进的字幕脚本格式。基于SSA 4.00+编码构建。ASS的主要变化就是在SSA编写风格的基础上增添更多的效果和指令。SSA当前版本为V4.00。ASS则使用更高级的V4.00+编码。

    1.2 脚本说明

    1.2.1 头部

    Script Info: 脚本的一般全局信息:
    Title:标题
    Original Script:作者
    Script Updated By:更新时间
    Script Type:类型(用于兼容性设置,SSA为4.00,ASS为4.00+)
    PlayResX & PlayResY:屏幕宽高
    PlayDepth(决定颜色数量)
    Timer:定时器

    1.2.2 样式定义

    V4 Styles: 定义文字样式,在events部分可以直接调用这些样式。
    [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
    [V4+ 样式]
    格式:名称、字体名称、字体大小、原色、副色、轮廓色、底色、粗体、斜体、下划线、删除线、
    缩放X、缩放Y、间距、角度、边框样式、外线、阴影、对齐、边距L、边距R、边距V、编码
    PrimaryColour. 第一颜色,即文字本身的颜色
    SecondaryColour. 第二颜色。在卡拉OK时使用,卡拉OK指令会用第一颜色填充第二颜色。
    TertiaryColour(ASS中称为OutlineColour)边框色,文字边框的颜色。
    BackColour. 阴影颜色,文字阴影的颜色。
    MarginL, MarginR. 左右缩进。文字距离视频最左最右的最小距离。
    MarginV. 上下缩进。文字热点(对齐点)距离视频上下的最小间距离。这取决于文字对齐方式,如果该文字使用中对齐,则上下缩进值无效。需要时文字可用 或N命令换行。ASS文件中,Script Info部分的一个参数“WrapStyle”也可以改变此值。
    Outline. 边框样式,文字可以设定为有边框,无边框,或拥有不透明边框(矩形背景)。
    Shadow. 阴影距离。文字的阴影到文字的距离大小。
    AlphaLevel. 透明度(0至255有效)
    Encoding. ASCII码中的文字编码方式。

    1.2.3 主体

    Events: 字幕的主体部分。
    字幕的出现时间和样式、对样式的修改和特效均在这里编写。 其一般语法格式为:{命令(参数,多个参数用逗号隔开)}, 例如 {move(80,80,200,200,150,300)}.只有一个参数的命令不需要括号 (如. {kf89}).

    1.2.4 注意事项

    一对大括号内可以放置多个语句。 如. {ord8e1}
    换行的 N 和 命令不需要在两边加大括号就可使用。

    1.3 双语字幕

    [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,10,10,10,0
    Style: Chs,Arial,12,&Hcccccc,&Hcccccc,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,0
    Style: Eng,Arial,20,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,0
     
    [Events]
    Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
    Dialogue: 0,0:01:06.63,0:01:07.63,Default,,0,0,0,,GIRL: Hey, Nat!N{ Chs}女孩:嘿,纳特!
    Dialogue: 0,0:01:37.08,0:01:38.71,Default,,0,0,0,,We're both upside down.N{ Chs}我们两个都颠倒了。
    Dialogue: 0,0:01:38.87,0:01:40.96,Default,,0,0,0,,And I bet you're gonna fall down first.N{ Chs}我打赌你会先倒下。
    Dialogue: 0,0:01:41.12,0:01:42.66,Default,,0,0,0,,No, you will.N{ Chs}不,你会的。

    2. srt

    SubRip是一款适用于Microsoft Windows的免费软件程序,可将字幕及其时间从各种视频格式提取到文本文件中。它是在GNU GPL下发布的。其字幕格式的文件扩展名得到广泛支持。每个文件都是人类可读的文件格式,其中字幕与时序信息一起顺序存储。互联网上分发的大多数字幕都是这种格式。.srt

    2.1 文件格式

    序号开始: 标识顺序的数字计数器
    时间起始: 字幕应该出现在屏幕上的时间 --> 它应该消失的时间
    字幕内容: 一行或多行的字幕文本本身
    空行结束: 一个不包含文本的空行,表示该标题的结束

    2.2 样式

    非正式地,该格式具有非常基本的文本格式,可以根据处理应用程序进行解释或传递以进行渲染。格式源自 HTML 标记的粗体、斜体、下划线和颜色:
    粗体——<bold>…</bold>或{bold}…{/bold}
    斜体 -<italic>…</italic>或{italic}…{/italic}
    下划线 –<underline>…</underline>或{underline}…{/underline}
    color 字体颜色 - <font color="color name or #code">…</font>(如在HTML 中)
    position 行位置 -X1:… X2:… Y1:… Y2:…在时间戳之后表示文本坐标

    2.3 位置

    字幕摆放, 若不明示, 则处在底部居中位置, 即默认{an2}. 可使用如下标识控制字幕出现的位置.
    |–	字幕靠左	字幕居中	字幕靠右
    顶部	{an7}	{an8}	{an9}
    中间	{an4}	{an5}	{an6}
    底部	{an1}	{an2}	{an3}
    

    3. 小结

    ass 相当于 srt + 简单样式表
    • 只需要单纯文本字幕时使用 srt
    • 需要样式文本字幕时使用 ass
    常见的应用是中英双语字幕时, 使用ass可以很方便的分别控制2种语言的颜色, 字体大小.

    3.1 列出支持的格式

    $ ffmpeg -hide_banner -codecs | grep "^...S"
     ..S... = Subtitle codec
     DES... ass                  ASS (Advanced SSA) subtitle (decoders: ssa ass ) (encoders: ssa ass )
     ..S... srt                  SubRip subtitle with embedded timing
     ..S... ssa                  SSA (SubStation Alpha) subtitle
     DES... subrip               SubRip subtitle (decoders: srt subrip ) (encoders: srt subrip )
     DES... mov_text             MOV text
    ...

    3.2 srt-ass

    $ ffmpeg -i input.srt output.ass
    $ ffmpeg -i out.ass out.srt

    3.3 sbv-srt

    ffmpeg -i captions.sbv captions.srt
    ffmpeg -fix_sub_duration -i captions.sbv captions.srt

    4. 字幕操作

    4.1 软字幕(推荐)

    软字幕是独立于视频流的字幕流信息, 可以加入多个, 删除也很方便, 视频不需要重新编码, 速度相当于复制文件.

    4.1.1 提取字幕流

    查看视频文件信息, 找到需要的字幕流
    $ ffmpeg -i input.mkv
    不指定map, 默认提取第一个字幕
    $ ffmpeg -i input.mkv sub.srt
    绝对map, 提取第6个流信息
    $ ffmpeg -i input.mkv -map 0:5 sub.srt
    相对map, 提取第4个字幕流信息
    $ ffmpeg -i input.mkv -map 0:s:3 sub.srt

    4.1.2 添加字幕流

    添加1个字幕流
    $ ffmpeg -i IceAge3.mp4 -i sub.english.srt -map 0 -map 1 -c copy -c:s mov_text -metadata:s:s:0 language=en IceAge3.en.mp4
    $ ffmpeg -i IceAge3.mp4 -i sub.english.srt -map 0 -map 1 -c copy -c:s mov_text IceAge3.en1.mp4
     
    在已有字幕的基础上添加新字幕
    ffmpeg -i IceAge3.en.mp4 -i sub.chinese.srt -map 0 -map 1 -c copy -c:s mov_text IceAge3.encn.mp4
     
    添加多个字幕流
    $ ffmpeg -i IceAge3.mp4 -i sub.english.srt -i sub.chinese.srt -i sub.ass.en.ass -map 0 -map 1 -map 2 -map 3 -c copy -c:s mov_text -metadata:s:s:0 language=en -metadata:s:s:1 language=cn  -metadata:s:s:2 language=en.ass IceAge3sub.mp4
    $ ffmpeg -i IceAge3.mp4 -i sub.english.srt -i sub.chinese.srt -i sub.ass.en.ass -map 0 -map 1 -map 2 -map 3 -c copy -c:s mov_text IceAge3sub.mp4
    $ ffmpeg -i Trese.avi -i en.srt -i CN.srt -map 0:v -map 0:a -map 1 -map 2 -c:v copy -c:a copy -c:s mov_text -metadata:s:s:0 language=en -metadata:s:s:1 language=cn out2.mp4
    $ ffmpeg -i Trese.avi -i en.srt -i CN.srt -map 0 -map 0:s:0 -map 0:s:1 -map 0:s:2 -c copy -c:s mov_text -metadata:s:s:0 language=en -metadata:s:s:1 language=cn out2.mp4

    4.1.3 注意

    不指定map则无效
    ffmpeg -i input.mp4 -i sub.srt -c copy out.mp4
    ffmpeg -i input.mp4 -i sub.srt -map 0 -c copy out.mp4
     
    如下语法, 对于mp4无效, 对于mkv,则会增加字幕.
    ffmpeg -i input.mp4 -i sub.srt -map 0 -map 1 -c copy out.mp4
    $ ffmpeg -i input.mkv -i sub.srt -map 0 -map 1 -c copy out.mkv
     
    完整语法:
    $ ffmpeg -i input.mp4 -i sub.srt -map 0 -map 1 -c copy -c:s mov_text out.mp4
    $ ffmpeg -i input.mp4 -i sub.srt -map 0 -map 1 -c copy -c:s mov_text -metadata:s:s:0 title=en out.mp4
    $ ffmpeg -i input.mp4 -i sub.srt -map 0 -map 1 -c copy -c:s mov_text -metadata:s:s:0 language=en out.mp4

    4.2 硬字幕(不推荐)

    将字幕嵌入到视频帧中,这个过程需要重新编解码,所以速度比较慢。而且不可逆.
    您可以使用以下两种过滤器之一来刻录文本字幕(硬字幕):subtitles或ass.
    subtitles 滤镜
    ffmpeg -i video.avi -vf subtitles=subtitle.srt out.avi
    ffmpeg -i video.mkv -vf subtitles=video.mkv out.avi
     
    ass 滤镜
    ffmpeg -i video.avi -vf "ass=subtitle.ass" out.avi
    它仅限于ASS(高级变电站阿尔法)字幕文件, 所以若是SubRip,MicroDVD或任何其他支持的文本字幕,您必须在使用此过滤器之前将其转换为 ASS:
    ffmpeg -i subtitle.srt subtitle.ass
     
    基于图片的字幕
    你可以燃烧“基于图像的”字幕到一部电影中,通过使用叠加视频滤波器以覆盖图像。例如,dvdsub 是一种基于图片的叠加字幕。在单独的流中带有 dvdsub 字幕的 MKV 示例:
    ffmpeg -i input.mkv -filter_complex "[0:v][0:s]overlay[v]" -map "[v]" -map 0:a <output options> output.mkv

    5. 相关链接

     
    sztom osoft@qq.com CC-BY-NC-SA
  • 相关阅读:
    android和ios系统框架
    iOS分类和扩展(Categories和Extensions)
    iOS并发编程
    认识View Controller
    JVM(Java虚拟机)
    iOS Apps核心对象
    Memory Management in Cocoa Program
    Block和GCD介绍
    iOS 系统框架分层结构
    ReLearn C(The C Programming Language.2Nd)
  • 原文地址:https://www.cnblogs.com/sztom/p/14998032.html
Copyright © 2020-2023  润新知