由于产品开发的需要,近期工作涉及到3D蓝光影碟中的SSIF文件解析;
发现目前关于SSIF的资料真是太少了,可供程序员参考的资料则更少;
分析了一下,资料这么少的原因有2个:
 第一点,蓝光组织没有免费开放SDK;(获取SDK需加入组织,需要交纳权利金,需要保证不为盗版留漏洞)
 第二点,目前盗版3D蓝光影碟不太多;(有需求才有开发,即使开源软件开发者也优先开发需求量大的软件)

不过,我经过近期的努力,已经基本掌握的SSIF文件的解析方法,并且编写了DirectShow下的Parser过滤器;
以下内容比较粗疏,仅供各位同行参考:

1.访问单元:SSIF文件是192字节规格的MPEG2-TS文件,每32个TS包组成一个[访问单元],所以,一个

访问单元是192*32=6144字节,对SSIF文件的应该以6144字节的整倍数读取;

2.传输流解析:对于SSIF的每个192字节的TS包,忽略前面的4个字节,后面的188字节按照标准TS解析

方法,和其他TS流一样,它也包含PAT和PMT以及PES流;不过对于SSIF文件,只有一个[节目],也就

是说,只有一个PMT流,但是对于PMT的内容要注意,如果遇到第一个完整的PMT的section就认为OK,

那么就会无法识别MVC的PES流(有些SSIF的PMT的第一个Section不包括MVC流),所以,要继续读

取后续的PMT数据,直到遇到PMT声明MVC流信息为止;(具体原因是:SSIF文件是由M2TS文件和扩

展数据交错组成的,PMT的第一个Section很可能是M2TS的数据,必须多探测一些PMT数据,直到遇到

SSIF的扩展部分的PMT数据为止);

3.新版本文档:旧版本的ISO13818-1和旧版本的H.264文档,并没有MVC流部分;所以,你必须找到最新

版本的文档,我找到的新版本的标准文档是英文版,相比旧版本的标准文档,只是扩充了一些新东西,

阅读不算吃力;(这些标准文档在ISO/ITU可以找到)

4.参考的代码:如果只是阅读标准文档来写代码,那会很吃力,建议一边阅读FFMPEG的代码,一边阅读

标准文档,这样会更好的理解标准文档,也会有一个参照代码,便于设计自己的代码架构;

5.视频流信息:我需要开发一个用于DirectShow的源过滤器,所以,需要从SSIF文件的AVC流和MVC流里

面提取视频规格信息,总的来说,无论是AVC还是MVC,都是H.264格式的数据,只是MVC流不包含关键

帧,MVC流是依赖AVC流来解码的(MVC在解码时需要参考AVC流,所以可以看作MVC只有P帧和B帧);

提取视频规格消息的具体步骤是:首先对一个H.264的PES帧进行NALU分解,如果这个PES帧包括SPS

或PPS类型的NALU,那么就开始分析SPS的NALU数据,并且保持SPS的NALU数据和PPS的NALU数据,

当然,分析SPS数据之前,还要做脱壳处理(就是针对0x03码做脱壳),然后,以BE位序 读取SPS数据,

必须注意SPS的一些字段是以[哥伦布码]方式存储的,所以,还要考虑解码[哥伦布码],具体的脱壳和哥伦

布码算法,在H.264文档里面有非常明了的说明;我们可以从SPS里面得到[规格][级别][宽度][高度]。。这

类信息,这也是AM_MediaType里面必须的;

6.音频流信息:SSIF文件可以包含AC3/EAC3/DTS/DTS-HD/Ture-HD/LPCM这些音频流,我们必须对这些类

别的音频流一一进行规格解析,不建议完全照抄FFMPEG的解析方法,太山寨了,应该阅读这些音频流的

标准文档,然后规规矩矩的写出解析代码,免得遇到稍微特别的音轨就导致故障;必须提醒一下,这些音

频流的解析大多需要按位读取,而不是按字节读取;(DTS和AC3还存在扩展子流,挺有趣)

7.字幕流信息:一般来说,SSIF包含的大多是PGS格式的字幕流,说白了,就是YUV色系的RLE压缩的位图,

DirectShow的AM_MediaType只需要语言码,我们不需要解析PGS数据;(如果关注PGS解码方法,可以

参考FFMPEG的代码,虽然算法山寨了一些,但是能用);

8.视频的帧率:我所测试的几个SSIF文件,其中的SPS的VUI都没有帧间隔时间,就是说,没有现成的帧率参

数可供读取,那么,我只好先连续读取6个AVC的PES帧,然后用各帧的DTS差值推算,还挺准的;(注意

不要用PTS值来推算,因为PTS值可能 先大后小)

9.跳转的方法:既然是DirectShow的SourceFilter,那就应该实现IMadiaSeeking接口,实现的方法也不太难,

加载SSIF文件的时候,先扫描文件前6M字节,再扫描文件的尾6M字节,记录AVC流的最大PTS和最小PTS

数值,当需要Seeking的时候,用比例推算法 从时间推算文件位置,然后读取一点数据,看看PTS是多少,

如果比目标时间大,那么就以推测位置作为max 以文件开头作为min,再次比例推算;如果比目标时间小,

就以推测位置作为min 以文件结尾作为max,再次比例推算;只要迭代3次,误差就会小于两秒,最后,再

来一次顺序扫描,找到目标时间之前的最接近目标时间的文件位置,然后开始寻找同步点(AVC的IDR);

a.卡碟的预防:如果SSIF文件位于硬盘,那么你可以放心读取;不过,对于光碟,必须要防止光碟划伤造成的

读取卡死现象,预防的方法是采用OverLapped读取方式,可以规定读取超时;

嗯。。。我所遇到的难点和要点就这么多,目前,我的ParserSSIF部件才见过初步测试,以后还会遇到各种问

题,当我一一解决以后,我会继续增补这篇帖子,祝各位顺利

3D蓝光影碟的SSIF文件相关推荐

  1. 关于蓝光影碟,有一些常识,你不一定知道

    以下文字的原始资料均来源于蓝光联盟公布的蓝光音视频规格白皮书, 有兴趣的朋友可以在这里下载到该白皮书的英文版(<BD ROM-视听应用格式规范>(2005年3月更新)) 1.蓝光影碟的视频 ...

  2. 如何在 Linux 平台下看蓝光影碟

    随着蓝光光驱的价格逐步走低,这一未来高容量光存储介质也得到了更多人的认识.蓝光影碟更以它清晰的画面博得了电影发烧友的青睐.那么如何在 Linux 平台上欣赏蓝光影碟带来的视觉盛宴呢? 首先介绍下朝内市 ...

  3. java蓝光_蓝光文件解析

    随着网络带宽.硬盘容量.屏幕分辨率等基础条件的提升,人们观影的要求也从标清.高清一路上升到4K.UHD. 蓝光影碟(BD Disc)是DVD的升级版,可以作为超高清影片的载体. 由于一些大家都懂的原因 ...

  4. 【每日一具3】推荐一个4K、蓝光、3D高清影视下载站,影视资源丰富 发烧友必备

    ​我猜测大家收藏都是有些能看片源比较丰富能看最新电影的网站,这些网站往往都是采集最大资源网的片源. 最新的电影收录后的画质不敢恭维,对于那些真正的影视爱好者来说这不是最好的选择,今天博谈天下给你们推荐 ...

  5. 《蜘蛛侠4:超凡蜘蛛侠》蜘蛛侠前传 美国大片蓝光高清720P下载

    ◎译 名 超凡蜘蛛侠/蜘蛛侠4/3D蜘蛛侠:惊世现新(港)/蜘蛛人:惊奇再起(台)/神奇蜘蛛侠/新蜘蛛侠/蜘蛛侠前传 ◎片 名 The Amazing Spiderman/The Amazing Sp ...

  6. 笔记本光驱在计算机里不显示器,笔记本dvd光驱怎么播放蓝光_电脑如何播放蓝光碟图文步骤...

    蓝光电影越来越多,高清画质带给人们更完美的体验,不少人想在个人电脑上播放蓝光电影,应该具备什么条件呢?今天小编就针对笔记本dvd光驱怎么播放蓝光的问题,为大家带来电脑如何播放蓝光碟图文步骤,希望对你有 ...

  7. 分辨率、码率、帧率、蓝光相关介绍

    文章目录 # 什么是分辨率? # 常见的分辨率 # 那么P.K.i 又代表什么意思呢? # K和P是否同时出现? # 分辨率越高越好吗? # 什么是FPS.Bitrate和HZ? # 什么是蓝光? # ...

  8. html hdr文件,hdr文件是什么?hdr和蓝光哪个清晰?

    hdr文件是什么? HDR是高动态范围图像的文件格式,相比普通的图像,可以提供更多的动态范围和图像细节,根据不同的曝光时间的LDR(Low-Dynamic Range)图像,利用每个曝光时间相对应最佳 ...

  9. 高精度结构光工业3D相机Mech-Eye PRO全面升级:可选蓝光/白光版本,适合中距离应用...

    近日,梅卡曼德正式发布第四代Mech-Eye PRO(原Pro Enhanced系列)高精度结构光工业3D相机.Mech-Eye PRO是梅卡曼德针对无序抓取.定位装配.学术研究等对精度要求较高的中距 ...

  10. nero刻录 蓝光iso_如何将任何视频文件刻录到可播放的蓝光光盘

    nero刻录 蓝光iso If you've ripped your Blu-Ray collection to make your library more convenient, you migh ...

最新文章

  1. 开源项目在GitHub上贡献33.5W个Star!腾讯的十年“云”答卷,请收好!
  2. hadoop分布式搭建
  3. 从零开始学习Kafka
  4. zookeeper在window下的搭建
  5. 点积的那个公式:a dot b =||a||*||b||CosX.
  6. 5码默认版块_5个小众的生活学习类的宝藏App
  7. tomcat启动问题
  8. 没有任何一个行业是没有竞争的
  9. 你还没听过 CynosDB 吗?不来这场数据库技术沙龙就要 OUT 了!
  10. 人人译视界 for Mac(智能协同翻译)
  11. Dev-cpp5.4.0的详细安装步骤
  12. android超频闪退,显卡超频后玩游戏闪退 | 手游网游页游攻略大全
  13. TiDB 在 Cisco Webex 架构中的部署和应用
  14. AB触摸屏2711P-T12W22A9P、2711P-T10C4A9,2711P-T10C22D8S-B、2711P-T10C22D9P-B、2711P-T12C10D2
  15. 内网穿透到cs上线--部署到公网上!!
  16. vue权限管理实现思路
  17. python单机考试答题系统如何制作_在线答题系统是如何创建试卷的?
  18. surface4 笔盖失灵的解决方案
  19. 百度推广年终总结,百度竞价年终总结参考
  20. Python 以练促学之 List 篇

热门文章

  1. CentOS7 安装aria2
  2. 希尔密码(Hill)
  3. 在CentOS 7 1804 中 安装 使用 GitLab 11.4.3-ee (企业版、社区版最新版、或任意版本)
  4. SSM9==SSM项目启动过程、xml配置SSM项目及需要的3大配置文件、原生SSM未前后端分离的电商网站项目(角色管理员、购买者)只使用了最基础的注解,Model传参
  5. 【狂神说】Spring学习笔记(全)
  6. linux脚本显示时间戳,shell下获取时间戳
  7. Java进销存管理系统
  8. matlab批量写入文件,matlab批量合并txt文件
  9. 鱼眼相机矫正,按经纬度展开为环视图
  10. Shiro 详细教程(集各教程内容为一体)