从TS文件中提取DVB Subtitle字幕的有效方法

深圳市同洲电子股份有限公司韦斌

(本文发表于《卫星电视与宽带多媒体》2013年16期)

摘要:DVB Subtitling标准的多语种可消隐字幕已大量运用于欧洲数字电视广播系统,而我国大陆地区在此方面的运用还未见报道。DVB Subtitling系统操作较为复杂,昂贵,笔者已找到一种将最简单的Srt字幕文件封装到TS流中传输、解码、显示的方法,所有功能与欧洲DVB Subtitling标准基本一致,可惜暂不兼容欧洲标准;而我国DVB字幕标准未见正式颁布,在此,先推出一篇短文,介绍DVB Subtitling字幕的提取办法,供有兴趣者参考。在适当的时候,笔者将介绍另外一种很简单的适合国情的DVB字幕系统的解决方案。

关键词:DVB Subtitling  Close Caption  可消隐字幕

欧洲发达国家和地区(包括我国香港特区),其数字电视广播的字幕普遍采用欧洲DVB Subtitling标准,在卫星电视、有线电视及地面数字电视广播上大量采用。目前国内的观众可以从香港地面数字电视广播或亚洲3S卫星4000MHz频点凤凰卫视那组码流里接触到该字幕系统。DVB Subtitling系统具有可显示、可关闭字幕的功能,还可以选择多种文字字幕服务(前提是运营商提供多语种字幕广播),这是一种比较人性化的字幕系统,也称Close Caption。而我们国内电视上常见的内嵌字幕(也称Open Caption开放型字幕),字幕与图像是一体的,无法分离,更无法关闭或选多语种字幕,两者的优劣对比,高下立判。

图1 、DVB Subtitles属可消隐字幕,而可消隐字幕在DVD光盘时代就已经很常见了,它可以保持图像字幕的相互独立性,便于节目交流及视频内容的再利用,比传统的开放型内嵌字幕要先进。

图2、 DVBSubtitles可同时封装多条字幕轨道,由用户自由选择打开或关闭,可满足观众不同语言字幕的需要。

使用码流分析软件,可以看到采用DVB Subtitling标准制作字幕的节目,有DVB Subtitles字样的TS私有流,即为DVB字幕。

图3、用码流分析软件可看出TS流中有两条DVB Subtitles字幕。

用 VLC media player 、Potplayer等软件播放能显示 DVB Subtitles字幕。DVB Subtitles为图形字幕,内含时间轴,不能直接提取为文本格式。
    提取这种字幕,可以用OCR光学字符识别软件,把字幕提取出来成为 SUP 或 IDX/SUB 字幕文件。目前能提取DVB字幕的文件为ProjectX及DVBSub2Text、BDSup2sub等,前者可将DVB中的中文及其他文字字幕提取转换为SUB文件,而DVBSub2Tex暂不支持中文识别,但识别及提取英文或拉丁文字幕却非常准确便捷,准确率接近100%,可一次性直接转换为Srt字幕文件;而BDSup2sub则可以配合ProjectX,将DVB Subtitles字幕转成可再利用的图形字幕文件,基本保留DVB Subtitles字幕的原汁原味。现我们分别介绍三种软件的使用方法。

第一节   使用DVBSub2Text提取英文或拉丁文字幕

图4、 DVBSub2Text,是一款免费的DVB转文本字幕的软件

1、  启动DVBSub2Text程序。由于目前DVBSub2Text对中文及日文等亚洲文字的支持不理想,识别出来的都是乱码,我们只用它来OCR识别英文或拉丁文字幕。

图5、 DVBSub2Text主界面

2、  点击左上角FileàOpen  MPEG -TS,打开电脑中的DVB TS流文件

图6、选择要分离的DVB TS流,打开

TS流文件加载后,如果中间“Decoded  Image”(图形解码)没变化,说明没有DVB Subtitles数据;如有可识别的DVB Subtitles字幕,则几秒钟后中间框会变绿。

图7、 可以看到左边框中出现视频音频轨道及三条字幕轨道,字幕轨道的 PID分别为845、846(实际上第二条与第三条是一样的,都是英文字幕),中间框变为绿色,说明有有效的DVB Subtitles字幕。

3、我们要选的是英文字幕转换,故将前面两条中文轨道字幕的勾选框去掉(见图8)

图8、将不需要的字幕轨道的勾选框取消

图9、在要保留的字幕勾选框里打钩,再点击Start,即开始进行OCR识别与转换

图10、OCR识别系统开始工作,中间屏幕出现字幕,右边白色方框内即出现提取出来的时间轴与台词字幕。大家可以发现,这完全是Srt格式的字幕。

图11、字幕识别结束后,按Save将提取出来的字幕存为Srt文件。

图12、保存字幕文件到指定文件夹

图13、用记事本直接打开提取出来的字幕,可以看到它们是按Srt格式排列

用记事本直接打开,可以看到我们已经得到一个完整的Srt文件,英文字母的识别率接近100%(当然也偶有错误,故最好检查一遍),但有一些特殊符号,如分隔行的“-”,识别出来的却变成,我们需要用替换的办法把它替换为“-”。在记事本中点击编辑-替换-将替换为-,最后点击“全部替换”,即可得到一个合格的Srt字幕文件。如果替换效果不佳,还需要人工检查一下,将乱码的符号删除或替换掉。

图14、对乱码进行替换处理

图15、至此,一个合格的DVB英文字幕Srt文件就很快提取出来了。

用这种方法提取DVB Subtitles英文字幕,是目前所知的最为便捷高效的方法。如果我们收录到国外无中文字幕的DVB节目,可先用此法分离提取Srt格式字幕,并可在此字幕基础上,根据英文内容及时间轴制作中文字幕,就要比根据图像声音听译记录字幕的方法快捷准确得多了。不知道网络上那些美剧字幕组是否是用此法来制作中文字幕,我用此法测试制作的中文版Srt字幕,一部电影只需一个上午就完成字幕翻译制作工作,连视频及声音都不需要打开。

有时会出现字幕时间轴整体提前或滞后几百毫秒的问题,只需用其他Srt字幕编辑软件调整一下即可(如SrtEdit2012等),在此不再赘述。

该方案将英文或其他拉丁文图形字幕转成Srt文件格式,不仅高效准确,而且便于修改、编辑、传播及再利用。对专业级广播电视来说,尤其重要的是,用Srt格式转换为其他格式字幕时,可以做出很漂亮的及清晰度很高的字幕(包括各种特效字幕),故对于带有DVB Subtitles英文等拉丁文字幕的电视节目,强烈建议采用此法进行英文字幕提取。

第二节   使用ProjectX提取中文字幕

对于非英文或拉丁文的汉语、阿拉伯语、日语、朝鲜语及各种小语种图形字幕,目前用DVBSub2Text做OCR识别,还是很不成熟的,出来的都是乱码,这主要是软件暂时缺乏字库支持,如果以后能支持汉字等字库, DVBSub2Text将是很好用的一款DVB字幕提取软件,故目前我们只能选用另一种方法提取非英文字幕文件。我们这里借助的是免费的ProjectX_0.91.0软件版本,它是运行在JAVA环境下的,故需要先下载JAVA软件,可到其官方网站免费下载。推荐下载脱机版,方便以后在无网络的地方使用。
ProjectX_0.91.0.zip下载地址为
http://sourceforge.net/projects/project-x/
直接下载地址:
http://sourceforge.net/projects/ ... download?_test=goal

JAVA脱机安装WIN版的直接下载地址
http://sdlc-esd.sun.com/ESD6/JSC ... Host=javadl.sun.com
这两款软件下载安装完毕后,即可运行ProjectX_0.91.0

图16、进入ProjectX文件夹中,单击ProjectX.jar,用右键选打开方式为JAVA,即可成功启动ProjectX。不要直接双击,否则可能会出现错误。

图17、图上声明告诉我们这是一款免费软件,我们点击“I agree(同意)”即可进入下一步。

图18、点击左上角FileàAdd(添加),在电脑中的指定位置选择我们要提取字幕的TS流

图19、选择需要提取字幕的TS流,按“Select”.

图20、打开后在下方出现加载的TS流的文件名,再点击这个文件,上方框内即出现TS流中所包含的视频、音频和字幕轨道。我们可以看出一条字幕轨道为CHI(实际上是繁体中文),另一条为CHS(实际上是英文)

图21、点击FilterControl,进入下一选项

图22、因为我们只需要分离字幕文件,而不需要分离其他视频及音频文件,故在右侧只选“Subpicture”(图形字幕),其他选项的勾选取消。然后点击“more settings”(更多设置)

图23、按图例点击左侧“subtitil”(字幕),再勾选右下角“additional export as Vob Sub(idx+sub)”,将字幕文件转换为idx+sub文件。Idx内含时间轴,sub为对应的字幕图像。读者如果有时间和兴趣,还可以改变其它选项,提取出来的字幕效果可能更好。

图24、关闭设定,点击左上角QuickStart(快速开始)

图25、开始提取字幕

图26、在同一个文件夹中即可看到提取出来的两条轨道的字幕文件和附件。其中,对我们有用的是sub及idx文件。Idx为时间戳文件,sub为对应的图形字幕文件。Idx+sub文件字幕可以被一些播放软件直接识别与解码,但它的字形及颜色往往比较难看,所以我们还是要再花点精力继续下一步转换工作。

现在,需要用另外一个软件,把提取出来的时间轴及图形字幕,用OCR光学字符识别软件识别出来。这里我们选用国内网友马健编写的免费软件IdxSubOcr,这是目前对汉字OCR识别率最高的软件,该软件需要跟微软Office2003或2007版本的MODI一起使用才有效。

我们可以在安装Offices时选择安装MODI(在Office工具选项中选,见图27),这样才能有效利用Office自带的OCR光学识别程序,帮助我们对图形字幕进行识别。

图27,在安装Office时,在Office工具选项中,从子选项Microsoft Office Document Imaging中,选“从本机运行全部程序”,然后进入下一步安装。安装全部结束后,还需要到微软官方网站免费下载SP1或SP2、SP3补丁,否则仍不能正确OCR中文字幕(很麻烦,是吗?)。另外,IdxSubOcr对英文字幕的支持不是很好(主要是空格往往不能正确识别,要花较长时间校对),故不推荐使用它来识别英文字幕。另外,它对朝鲜语(或者说是韩文)的识别也很差,有待改进。

图28 IdxSubOcr软件

用IdxSubOcr打开其中一个sub.idx文件。见下图。这样可以OCR出繁体字幕。

图29、选择我们要打开的idx文件。这里有两个文件,一个是繁体中文,一个是英文。我们只需转换中文字幕文件,英文字幕虽然也可以OCR,但识别率较低,速度也较慢,不建议采用此方法来识别DVB Subtitles的英文字幕。

图30、选择需要转换的字幕,按确定进入下一步。

图31、点击“是”,进入下一步

图32因为我们事先得知是繁体中文字幕,故在OCR语言类选中文繁体。

图33 ,OCR开始,将图形字幕识别后转变为文本格式字幕,并分离出时间轴。

提取出来的字幕,最好再进行校对,修改错误识别的汉字,最后再检查时间轴是否正确,如有误差则使用相关软件调整时间轴,即可完成DVB字幕的抽取。目前发现,测试片段容易出现时间轴整体提前或延后几百毫秒的情况,需要后期调整;但转换一部正版提供的时间轴完整的节目,则很少出现这种情况。Srt字幕可转换成多种字幕格式,适合各种用途。

图34、根据提取出来的Srt字幕,重新制作新的字幕,可以做得比原版字幕漂亮多了,可以随心所欲制作出各种特效、各种颜色的字幕。

在业余条件下,是无法得到原版DVB节目的,从广播电视上录制下来的文件,为保证节目的完整性,往往连片头、片尾及片中插播的广告等节目也录了进去。我们分离节目字幕时,最好暂时不要对广告等内容进行切割,而是整体提取字幕,最后再对节目进行编辑,用其他TS流处理软件进行分割,舍弃无用的内容后再合并,这样,视频内容、音轨、字幕的时间轴也会保持同步,避免过早分割导致TS流中的原始数据的丢失。(如tsMuXerGui等TS流复用软件会把DVB Subtitle字幕数据丢失掉)。

第三节   使用BDSup2sub将DVB Subtlties字幕转换为可再利用的图形字幕

上述两种方法虽然最后可以制作出很漂亮的字幕,但有些读者可能还是觉得麻烦,心想能否直接使用DVB Subtitling格式的字幕。但现在很多多媒体播放器及播放软件,暂时还不能很好支持DVB Subtitling格式的图形字幕显示。那么能否直接提取出原始的DVB Subtitling格式的图形字幕,直接转换成其他格式,不需要对字幕进行识别和校正,好让我们用播放软件收看呢?

当然可以啦!我们再来介绍另一款可满足这一需求的软件BDSup2sub。

BDSup2sub为国外蓝光发烧友开发的一款免费软件,实际上可以配合ProjectX,将其从DVB Subtitles流中提取出来的IDX+Sub字幕文件,转换成可以再利用的Sup蓝光字幕(或称PGS字幕),再封装为TS流,完全保留了原DVB Subtitles字幕的原汁原味,也不会出现字幕错误(除非原版字幕有错),不需要重新制作图形字幕。这无疑降低了字幕制作难度,提高效率,对大批量处理、利用国外视频节目的字幕文件非常快捷。

目前,使用该方法提取转换的DVB Subtitles字幕,由于完全保留了原始字幕的图形,不可能更改字体字形,其特效效果较简单(仅能改变字幕大小和颜色),与我们直接制作的字幕相比,清晰度及漂亮程度还是稍差,用在专业级广播电视上有点勉强,故只宜用于日语、韩国语、阿拉伯语或其他较难制作、翻译和编辑的字幕上;当然如果是发烧友自我看节目用,那就绰绰有余了。而对中文及英文,建议采用第一节和第二节介绍的办法提取和制作,可以保证制作出非常漂亮的图形字幕。

图35、该方案提取出来的DVB Subtitles字幕,直接使用原版字幕的图形,与原版字幕的效果接近(见图1),对发烧友家庭使用还是绰绰有余的。这是一种简单的DVB Subtitles字幕再利用方法,转换非常快捷,不需校正字幕,特别适用于要求不是很高的场合使用(其实作为备选字幕,在专业广播电视领域使用也未尝不可)。而对难以OCR和编辑的日语韩国语泰语等小语种字幕,这种字幕提取和再利用的方法是特别简单有效的,效率很高。

下面,我们来介绍一下怎样用BDSup2sub软件,把ProjectX从DVB Subtitles流中提取出来的IDX+Sub字幕文件,转换成可以再利用的Sup蓝光字幕。

图36、打开BDSup2sub软件,选“File(文件)”—“Load(载入)”

图37、选择ProjectX从DVB的TS流中提取出来的后缀为idx字幕文件。

 

图38、载入文件

图39、系统会提示你设置字幕大小。如果节目源为PAL制式标清,选720×576,高清则选1080P。这个选项可以改变字幕的大小,读者不妨多测试几种参数,看哪个更适合。特别注意的是,FPS Target一栏,默认电视节目选25,但如果播放的是电影节目往往要选23.976,否则字幕的时间轴越往后越被拖长,容易导致字幕失去同步。

图40、字幕显示出来了,但颜色不好(我也奇怪为何在电视上显示正常的DVB Subtitling白色字幕,提取出来后颜色变得乱七八糟的),作为字幕播出需要进行调整。请按此图上面板各选项的配置,当然你有时间也可以选其他配置玩玩,会有不同效果,可能字幕会变得更漂亮,也可能更丑陋。

一般对于同一家DVB广播电视运营商来说,字幕参数是一致的,我们选择好各选项参数,使展现出来的字幕为最漂亮的状态后,保存起来,以后一直使用该参数转换即可。

特别需要注意的是,如果我们要把提取出来的字幕用于DVB广播或蓝光字幕制作上,那么输出格式(output Format)一定要选蓝光专用的Sup(BD),也就是PGS格式字幕。

图42、点击左上角编辑(Edit),选Edit DVD Frame这个栏目(调色板),可以对图形字幕做简单调整

图43、Color1为字幕背景色,直接在右侧Alp(颜色深度)栏上选00,即为透明背景(难道有人需要不透明的背景?不解);

图44、Color2为字体边色,按需要选(一般选黑色边),Alp(颜色深度)自选;Color3为字体边色厚度,自由选择;Color4最重要,为字体底色,一般选白色,也可以选其他喜欢的颜色。但如果用在DVB广播中,最好只选白色,因为很多机顶盒字幕不支持彩色,会显示为灰色字幕,很难看。有时不同的电视节目字幕颜色层会不一样,那就只好一个一个试了。

图45、选好颜色后再点击“Set ALL” 选择全部字幕,将它们都调成白色(或其他颜色),最后点击OK,字幕颜色和大小即改过来了。

目前笔者接触到的,只有香港地面数字电视广播上的DVB Subtitles,它们的字幕参数基本上是一样的,设置一次就行了。不知其他地方不同运营商的字幕是否也是如此?如果不一样,以上参数还是需要另行调整,有兴趣者自己去摸索吧。

图46、将调整好的字幕进行存储,存为Export文件

图47、文件名后缀为.sup_exp.sup,这个文件是包含了时间轴的图形字幕文件,可应用于蓝光字幕或DVB字幕封装。

图48、转换过程很快。

图49、我们在目标文件夹中看到多出来的后缀为.sup_exp.sup的文件,就是我们转换过来的DVB Subtitles文件。这个包含了时间轴的图形字幕文件可以直接用于DVB字幕封装或蓝光字幕封装,也可以作为外挂的图形字幕使用。

Potplayer播放软件是韩国人编写的一套免费软件,几乎全部兼容显示目前所知的各种流行文本及图形字幕,是目前所知字幕兼容功能最好的播放软件,比VLC、DVB Viewer等主流软件效果好多了。我们在测试中,以Potplayer播放软件为演示主体。

图50,用Potplayer等播放软件打开视频后,加载sup_exp.sup字幕文件,可收看到我们封装的图形字幕了,跟原版的DVB Subtitles效果非常接近了(参看图1,当然,跟图34我们重新制作的字幕相比,还是有些差距。)。其实别说是用在家庭环境,就是用在广播电视领域也是过得去的,它的优点是转换效率很高。

图51,我们提取的英文图形字幕显示效果,跟图2的DVB Subtitling原版字幕相比,区别已经不大了。

当然,要制作出漂亮的字幕,光看上述教程是远远不够的,还需要大家自己多练习多摸索,我的教程也有很多需要改进与完善的地方,欢迎大家提出修改意见。
    由于DVB Subtitle字幕制作技术目前仅为个别英国专业公司所掌握,我们对其代码还未完全了解,暂时无法提供与DVB Subtitle字幕完全兼容的字幕制作技术。电视节目制作机构对外节目交流如果使用DVB Subtitle字幕,还是需要购买英国某公司的专业字幕设备。

笔者现在找到另外一种非常简单的DVB字幕制作及播出、解码的解决方案,可以将Srt字幕或上面提取的DVB Subtitle字幕(即已转换为sup_exp.sup格式的图形字幕文件),直接编码为流媒体图形字幕私有流,与视频、音频(可以是多音轨)一起封装为一套节目的TS流,在数字电视广播通道中传输与解码,用户终端电视机上展现的效果与DVB Subtitling几乎完全一致,可以很轻松制作出非常漂亮的字幕,可自由选择显示或关闭台词字幕,可选多种语种字幕(如果TS流中有多语种字幕),可以认为是目前所知的最简单实用的DVB字幕系统,而且完全是免费的。如果借助一款免费的第三方软件,我们甚至可以将带有特效字幕代码的Srt或Ass高级特效字幕转码为遵循DVB封装格式的TS流在数字电视广播中播出,,此字幕系统已经进行多次内部测试(目前在DVB-C及DTMB环境测试均很稳定),效果相当好,个人认为在技术上已经超过欧洲DVB Subtitling字幕标准。我将于近期公开其制作方法,供有兴趣的读者参考,也欢迎广电同行进行相关测试。

从TS文件中提取DVB Subtitle字幕的有效方法相关推荐

  1. ffmpeg-从mp4、flv、ts文件中提取264视频流数据

    ffmpeg-从mp4.flv.ts文件中提取264视频流数据 main.c #include <stdio.h> #include <libavutil/log.h> #in ...

  2. 从mpeg ts文件中提取I帧(1):将ts包拼装为section或pes包

    写在前面的话:         不觉中已经在数码工作了十年有余,十年的青春.十年的汗水,如今即将离开,个中滋味难以言表! 以后可能不会在广电行业工作了,就用这个小程序,为自己十年的广电工作画上一个句号 ...

  3. 从mpeg ts文件中提取I帧(3):pes包的解析

    本系列的第一篇文章讲解了如何把ts包拼装为pes包,本章主要讲解如何解析pes包. 一.pes包的格式如下图所示: 二.相关字段解析 packet_start_code_prefix          ...

  4. 从mpeg ts文件中提取I帧(2):pat pmt解析

    一.PAT用途 1.描述当前传输流中 PMT 的 PID 信息. 2.描述PMT,与SDT的对应关系. 3.program_number=0时为network pid即nit的pid,接收pmt时注意 ...

  5. 从mkv文件中提取src格式等字幕流

    增加字幕流 ffmpeg -i video.avi -i sub.ass -map 0:0 -map 0:1 -map 1 -c:a copy -c:v copy -c:s copy video.mk ...

  6. ffmpeg-从flv文件中提取AAC音频数据保存为文件

    AAC ADTS格式协议: 从flv文件中提取AAC音频数据保存为文件. 如果需要详细了解AAC ADTS格式,可以查询文档. 原文件: 提取aac文件: main.c #include <st ...

  7. [SimplePlayer] 4. 从视频文件中提取音频

    提取音频,具体点来说就是提取音频帧.提取方法与从视频文件中提取图像的方法基本一样,这里仅列出其中的不同点: 1. 由于目的提取音频,因此在demux的时候需要指定的是提取audio stream Au ...

  8. ML之MLiR:利用多元线性回归法,从大量数据(csv文件)中提取五个因变量(输入运输任务总里程数、运输次数、三种不同的车型,预测需要花费的小时数)来预测一个自变量

    ML之MLiR:利用多元线性回归法,从大量数据(csv文件)中提取五个因变量(输入运输任务总里程数.运输次数.三种不同的车型,预测需要花费的小时数)来预测一个自变量 输出结果 代码设计 from nu ...

  9. python提取文件指定列_如何从csv文件中提取特定列并使用python绘图

    我有一个csv文件,其中包含以下几行数据:# Vertex X Y Z K_I K_II K_III J 0 2.100000e+00 2.000000e+00 -1.000000e-04 0.000 ...

最新文章

  1. PIC单片机入门_MPLAB 集成开发环境和 MPASM编译器
  2. 四十六、MongoDB数据库学习
  3. Jdk8一行代码读取文件
  4. excel中空格去不掉java_在Apache POI中跳过空白Excel单元格
  5. process credentials(二)
  6. 微信朋友圈八月十大谣言:洗澡先洗头会晕倒在浴室
  7. 一步一步写算法(之循环和递归)
  8. 运用提示原则证明线性无关
  9. 国二mysql综合应用题答案_2017年9月全国计算机二级MySQL考试章节练习题
  10. 切分窗体:MFC界面设计
  11. 九月新版【自动赚钱广告机广告阅读收入】新版金多多广告机源代码看广告看新闻赚钱自动钱广告机源代码自动广告阅读收入
  12. 考计算机二级需要学哪些,考计算机二级需要学哪些内容
  13. STC89C52 使用 LCD 1602
  14. MATLAB绘制平面填充图入门详解
  15. 【应用篇】MyBatis学习笔记
  16. Java高手速成 | 高质量代码编写最佳实践
  17. Three.js多细节层次LOD
  18. 转载:23种设计模式整理(很全)
  19. Findora基金会,推出跨链测试活动以及大使计划
  20. 操作系统开发--什么是内核?

热门文章

  1. Python控制结构(二)
  2. 阿里云elasticsearch试用套路
  3. 高压蒸汽灭菌及验证相关知识
  4. BDTC 2017数据库上午:犹他大学、东方国信、蚂蚁金服、微软、人大金仓
  5. Linux系统中常用命令行命令、快捷键、创建长路径的快捷键
  6. 在linux中使用tcpdump命令 – 监听网络流量
  7. 定时器输出的PWM频率范围及占空比精度
  8. oracle系统漏洞绿盟,【处置建议】Oracle WebLogic反序列化漏洞(CVE-2018-2628)安全处置建议...
  9. 计算机rom和硬盘,都是存储器,但RAM、ROM、闪存、硬盘怎么分?
  10. 大面积无线网络覆盖5大方案,满足不同场所的实际需求