22.MoreTv_字幕模块
2017-04-14 14:15:30 0 举报
字幕模块
作者其他创作
大纲/内容
搜索字幕searchSubtitleForBCS
播放时,实时返回当前时间点的字幕文本,提供UI显示暂停时,停止回调
从字幕信息的下载地址下载字幕SubtitleDownloader
搜索字幕
SubtitleDownloader
暂停/开始 pause/resume
4.下载字幕文件到本地路径
业务流程
从百度云存储中获取字幕文件hashFileHashUtil
volatile 与 同步一致功能,都可避免由多线程修改带来的值不一致现象
3.射手网字幕 api 查询字幕(下载地址)
全部下载完毕
初始化时从数据库获取本地已有的字幕信息,加载到内存中
解析完字幕文件时,notify
渲染进程:实时返回当前时间点的字幕文本利用锁停止线程
视频暂停/字幕文件空时,wait
视频播放时,notify
内存中查找字幕Vector
Vector
利用射手网字幕 api 查询字幕信息ShooterApiQuery
SubtitleDatabase
抽象解析器
setTimeTextSource 设置字幕文件(本地文件)
注入MediaPlayerInterface,OnTimedTextListener
a.存储相应信息到数据库
volatile int itemRemain 统计下载数量
外部
开多线程下载多字幕文件
字幕模块
SubtitleManager字幕文件下载保存管理
同步
回调搜索结果
ass字幕文件解析器(AssDecoder)
ShooterApiQuery
FileHashUtil
返回结果
提供ExtSubtitle
使得四条线程的hash都获取到后,进行拼接,才返回
开一个线程查询字幕信息
1.下载完毕
DecodeThread
锁对象 syncObj
解析进程:解析srt或ass格式的文件
2.获取字幕文件hash(百度云存储)
srt字幕文件解析器 (SrtDecoder)
ExtSubtitle(外部对接)根据需要回调当前时间点的字幕文本
+ pause+ resume+ destroy+ setTimeTextSource
存储相应信息到数据库中SubtitleDatabase
播放器模块
b.回调搜索结果
RenderThread
解析进程
外部对接
1.内存中查看字幕
开四个线程 下载文件的四段内容,计算相应hash(利用http Range头属性)
0 条评论
回复 删除
下一页