当需要为混流视频生成 SUP 字幕文件时, 可以使用 avs2bdnxml
工具将 ASS/SSA/SRT 字幕转换为 SUP 格式, 以便在一些低级的高清播放机上播放特效字幕。
作者没有提供已经构建好的版本. 所以需要自行构建
下载与构建
首先下载源码 avs2bdnxml-2.09.tar.bz2, 备用下载址: avs2bdnxml-2.09.tar.bz2
在安装了 GCC 的 Linux 环境下, 执行以下命令构建程序
make
或者, 如果想要构建分发版本
make dist
准备字幕文件
准备字幕。可以使用 SRT 或 ASS/SSA 格式生成字幕, 也可以预先生成 RGBA 视频
创建 AviSynth 脚本
要生成 SUP 字幕, 可以参考以下 AviSynth 脚本
video=AviSource("video.avi")
# 需要至少 VSFilter 2.39
MaskSub("subtitles.ext", video.width, video.height, video.framerate, video.framecount)
实例 创建一个名为 srttosup.avs
的脚本, 内容如下
video=LWLibavVideoSource("X:\zip2\00800.1.hevc")
MaskSub("C:\Users\Desktop\Annihilation.2018.1080p.BluRay.x264.Atmos.TrueHD7.1-HDChina.ass", 1920, video.height, video.framerate, video.framecount)
如果创建 RGBA 视频, 脚本示例如下
AviSource("subtitles_RGBA.avi")
FlipVertical()
运行程序
avs2bdnxml -t Undefined -l und -v 1080p -f 23.976 -b1 -o output.xml input.avs
对于某些程序, 可能需要将 PNG 文件转换为 8 位 RGBA 调色板, 使用 -p
参数即可, 但 BDSupEdit 不需要此步骤
输出格式
生成的 BDN XML 格式示例
<?xml version="1.0" encoding="UTF-8"?>
<BDN Version="0.93"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="BD-03-006-0093b BDN File Format.xsd">
<Description>
<Name Title="Undefined" Content=""/>
<Language Code="und"/>
<Format VideoFormat="[ 480i / 480p / 576i / 720p / 1080i /1080p ]" FrameRate="[ 23.976 / 24 / 25 / 29.97 / 50 / 59.94 ]" DropFrame="false"/>
<Events LastEventOutTC="00:00:00:00" FirstEventInTC="00:00:00:00" ContentInTC="00:00:00:00" ContentOutTC="00:00:00:00" NumberofEvents="[ number of encoded frames ]" Type="Graphic"/>
</Description>
<Events>
<Event Forced="[ False / True ]" InTC="00:00:00:00" OutTC="00:00:00:00">
<Graphic Width="0" Height="0" X="0" Y="0">000000.png</Graphic>
</Event>
</Events>
</BDN>
后续步骤
使用如 BDSupEdit 或 BDSup2Sub 的程序将 BDN XML 转换为 BD-SUP 文件。后续操作留给读者自行探索
原文
AviSynth rendered subtitles to BluRay SUP/PGS and BDN XML (v2.08)
AVS to BluRay SUP/PGS and BDN XML