从TS文件中提取DVB Subtitle字幕的有效方法
从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文件。
图13、用记事本直接打开提取出来的字幕,可以看到它们是按Srt格式排列
图15、至此,一个合格的DVB英文字幕Srt文件就很快提取出来了。
有时会出现字幕时间轴整体提前或滞后几百毫秒的问题,只需用其他Srt字幕编辑软件调整一下即可(如SrtEdit2012等),在此不再赘述。
第二节 使用ProjectX提取中文字幕
图16、进入ProjectX文件夹中,单击ProjectX.jar,用右键选打开方式为JAVA,即可成功启动ProjectX。不要直接双击,否则可能会出现错误。
图17、图上声明告诉我们这是一款免费软件,我们点击“I agree(同意)”即可进入下一步。
图18、点击左上角FileàAdd(添加),在电脑中的指定位置选择我们要提取字幕的TS流
图20、打开后在下方出现加载的TS流的文件名,再点击这个文件,上方框内即出现TS流中所包含的视频、音频和字幕轨道。我们可以看出一条字幕轨道为CHI(实际上是繁体中文),另一条为CHS(实际上是英文)
图22、因为我们只需要分离字幕文件,而不需要分离其他视频及音频文件,故在右侧只选“Subpicture”(图形字幕),其他选项的勾选取消。然后点击“more settings”(更多设置)
图24、关闭设定,点击左上角QuickStart(快速开始)
我们可以在安装Offices时选择安装MODI(在Office工具选项中选,见图27),这样才能有效利用Office自带的OCR光学识别程序,帮助我们对图形字幕进行识别。
用IdxSubOcr打开其中一个sub.idx文件。见下图。这样可以OCR出繁体字幕。
图32因为我们事先得知是繁体中文字幕,故在OCR语言类选中文繁体。
图33 ,OCR开始,将图形字幕识别后转变为文本格式字幕,并分离出时间轴。
图34、根据提取出来的Srt字幕,重新制作新的字幕,可以做得比原版字幕漂亮多了,可以随心所欲制作出各种特效、各种颜色的字幕。
第三节 使用BDSup2sub将DVB Subtlties字幕转换为可再利用的图形字幕
当然可以啦!我们再来介绍另一款可满足这一需求的软件BDSup2sub。
下面,我们来介绍一下怎样用BDSup2sub软件,把ProjectX从DVB Subtitles流中提取出来的IDX+Sub字幕文件,转换成可以再利用的Sup蓝光字幕。
图36、打开BDSup2sub软件,选“File(文件)”—“Load(载入)”
图37、选择ProjectX从DVB的TS流中提取出来的后缀为idx字幕文件。
图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字幕的有效方法相关推荐
- ffmpeg-从mp4、flv、ts文件中提取264视频流数据
ffmpeg-从mp4.flv.ts文件中提取264视频流数据 main.c #include <stdio.h> #include <libavutil/log.h> #in ...
- 从mpeg ts文件中提取I帧(1):将ts包拼装为section或pes包
写在前面的话: 不觉中已经在数码工作了十年有余,十年的青春.十年的汗水,如今即将离开,个中滋味难以言表! 以后可能不会在广电行业工作了,就用这个小程序,为自己十年的广电工作画上一个句号 ...
- 从mpeg ts文件中提取I帧(3):pes包的解析
本系列的第一篇文章讲解了如何把ts包拼装为pes包,本章主要讲解如何解析pes包. 一.pes包的格式如下图所示: 二.相关字段解析 packet_start_code_prefix ...
- 从mpeg ts文件中提取I帧(2):pat pmt解析
一.PAT用途 1.描述当前传输流中 PMT 的 PID 信息. 2.描述PMT,与SDT的对应关系. 3.program_number=0时为network pid即nit的pid,接收pmt时注意 ...
- 从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 ...
- ffmpeg-从flv文件中提取AAC音频数据保存为文件
AAC ADTS格式协议: 从flv文件中提取AAC音频数据保存为文件. 如果需要详细了解AAC ADTS格式,可以查询文档. 原文件: 提取aac文件: main.c #include <st ...
- [SimplePlayer] 4. 从视频文件中提取音频
提取音频,具体点来说就是提取音频帧.提取方法与从视频文件中提取图像的方法基本一样,这里仅列出其中的不同点: 1. 由于目的提取音频,因此在demux的时候需要指定的是提取audio stream Au ...
- ML之MLiR:利用多元线性回归法,从大量数据(csv文件)中提取五个因变量(输入运输任务总里程数、运输次数、三种不同的车型,预测需要花费的小时数)来预测一个自变量
ML之MLiR:利用多元线性回归法,从大量数据(csv文件)中提取五个因变量(输入运输任务总里程数.运输次数.三种不同的车型,预测需要花费的小时数)来预测一个自变量 输出结果 代码设计 from nu ...
- 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 ...
最新文章
- PIC单片机入门_MPLAB 集成开发环境和 MPASM编译器
- 四十六、MongoDB数据库学习
- Jdk8一行代码读取文件
- excel中空格去不掉java_在Apache POI中跳过空白Excel单元格
- process credentials(二)
- 微信朋友圈八月十大谣言:洗澡先洗头会晕倒在浴室
- 一步一步写算法(之循环和递归)
- 运用提示原则证明线性无关
- 国二mysql综合应用题答案_2017年9月全国计算机二级MySQL考试章节练习题
- 切分窗体:MFC界面设计
- 九月新版【自动赚钱广告机广告阅读收入】新版金多多广告机源代码看广告看新闻赚钱自动钱广告机源代码自动广告阅读收入
- 考计算机二级需要学哪些,考计算机二级需要学哪些内容
- STC89C52 使用 LCD 1602
- MATLAB绘制平面填充图入门详解
- 【应用篇】MyBatis学习笔记
- Java高手速成 | 高质量代码编写最佳实践
- Three.js多细节层次LOD
- 转载:23种设计模式整理(很全)
- Findora基金会,推出跨链测试活动以及大使计划
- 操作系统开发--什么是内核?
热门文章
- Python控制结构(二)
- 阿里云elasticsearch试用套路
- 高压蒸汽灭菌及验证相关知识
- BDTC 2017数据库上午:犹他大学、东方国信、蚂蚁金服、微软、人大金仓
- Linux系统中常用命令行命令、快捷键、创建长路径的快捷键
- 在linux中使用tcpdump命令 – 监听网络流量
- 定时器输出的PWM频率范围及占空比精度
- oracle系统漏洞绿盟,【处置建议】Oracle WebLogic反序列化漏洞(CVE-2018-2628)安全处置建议...
- 计算机rom和硬盘,都是存储器,但RAM、ROM、闪存、硬盘怎么分?
- 大面积无线网络覆盖5大方案,满足不同场所的实际需求