





























1、该文档不包含其他附件(如表格、图纸),本站只保证下载后内容跟在线阅读一样,不确保内容完整性,请务必认真阅读。
2、有的文档阅读时显示本站(www.woc88.com)水印的,下载后是没有本站水印的(仅在线阅读显示),请放心下载。
3、除PDF格式下载后需转换成word才能编辑,其他下载后均可以随意编辑、修改、打印。
4、有的标题标有”最新”、多篇,实质内容并不相符,下载内容以在线阅读为准,请认真阅读全文再下载。
5、该文档为会员上传,下载所得收益全部归上传者所有,若您对文档版权有异议,可联系客服认领,既往收入全部归您。
求动态构建不同的引擎对象,但构建出的对象均会由类型的指针来操作。
这样设计的好处是分离了业务逻辑部南京邮电大学硕士研究生学位论文第五章流媒体客户端在智能手机上的实现分与功能实现部分,方便了将来的维护与升级。
开始播放视频暂停视频播放停止视频播放进行快进快退定位设置音量获取当前播放位置获取当前音量值音视频同步算法在前面,我们已经设计了解码线程,在解码线程里面,我们从中获取了待解码的帧帧视频音频压缩数据,将这些压缩数据放入待解码的队列。
然后解码线程从这个队列中提取帧数据,解码后放入原始数据队列,视频渲染线程和音频播放线程会从原始数据队列中获取数据去绘制屏幕和播放声音。
现在,我们可以正确的解码视频流与音频流,但是,这里还有个重要的问题,就是音频与视频如何同步。
音频和视频流当中都有些关于以多快的速度和在什么时间来播放它们的信息在里面。
音频流有采样率,视频流有每秒的帧率,然而,如果我们只是简单的通过用总时间乘以帧率,再平均分配到时间轴上的方式来同步视频,那么就很有可能会失去同步。
因此,作为种补充,在媒体流中的包有种叫做解码时间戳和显示时间戳的信息。
我们知道,像在系列编码格式中,有三种帧格式,分别是帧表示双向预测帧,帧和帧表示关键帧,表示前向预测帧。
帧是帧内编码,包含了个特定的完整图像,而帧依赖于前面的帧和帧,并且使用比较或者差分的方式来编码。
帧与帧类似,但是它是依赖于前面和后面的帧的信息的,所以称为双向预测帧。
对于段视频来说,帧的显示顺序是但是,在我们显示帧之前需要知道帧中的信息,所以,帧在计算机中的存储方式可能会是这样因此,我们需要个解码时间戳和个显示时间戳。
解码时间戳告诉我们南京邮电大学硕士研究生学位论文第五章流媒体客户端在智能手机上的实现什么时候需要解码,显示时间戳告诉我们什么时候需要显示。
在这里,我们有三种选择同步视频到音频,同步音频到视频,或者都同步到外部时钟例如计算机上的时钟。
基于音频时钟同步首先,我们来看下同步视频到音频。
将从媒体流中提取的信息放入解码后的帧队列中。
我们还设置了个音频时钟,它记录了正在播放的音频的位置,视频线程中使用这个值来计算视频帧显示快了还是慢了。
当音频和视频失去同步的时候,最简单的办法是试着跳到正确帧即俗称跳帧,但是缺点也很明显,就是会造成丢帧从而影响用户体验。
作为种改进的方法,就是调整下次刷新屏幕的值如果帧的大幅落后于音频时钟,则减小显示延迟,尽可能快的刷新屏幕如果大幅先于音频时钟,则将显示延迟加倍,告诉视频线程慢点刷新屏幕。
这里,还需要设置个门限阀值,当手机运算资源不足或数据不完整时,与音频时钟的差值超过这个门限时,我们就认为已经失去同步,此时需要使用跳帧的方法跳至当前正确的帧。
我们看到,这种调整视频帧刷新屏幕速度的同步方法有时会导致视频丢帧,而对于部影视节目来说,视频的信息量较音频要高出许多,因此,我们最终选择了同步音频到视频的方法,以此来保证视频信息最大程度的还原到用户面前,从而保证良好的用户体验。
改进的基于视频时钟的同步算法与上面样,我们先从中获得个视频时钟,然后同步音频到这个时钟上。
具体同步的方法是测量音频的位置,然后与视频时钟比较,计算出需要修正的样本数。
这就是说,通过丢弃音频样本的方法来加快回放速度或者通过插入样本来放慢回放速度。
但是,并不能在每次出现偏差的时候都修正样本进行同步,因为这样会占用过多的运算资源来处理音频数据。
所以我们使用个平均差异值,它表示了当前音频时间位置与视频时钟之间的差异,稍后我们会给出它的定义,当这个平均差直大于门限的时候,我们才会去修正样本进行同步。
这样,我们保证了不会耗费过多的运算资源去处理音频数据,但是,我们也需要保证修正样本不会过大而导致声音变得尖锐。
这个平均差异值的定义是这里研究的重点,我们知道,在时间轴上,距离现在越近的值比离现在较远的值重要性高的多,对当前差异值的计算占有更重要的权重。
所以,这里我们不会使用简单的均值,而是加权后的均值。
加权均值的定义为南京邮电大学硕士研究生学位论文第五章流媒体客户端在智能手机上的实现这里,我们引入个衰减系数,它的定义如下上式中的为经验常数,用于调整过去差异值的衰减系数,可以根据实际用户体验做出调整。
由此,我们可以计算出到当前时刻的差异值的总和,在式中我们看到过去时刻的音频时钟与视频时钟差异值都会乘以衰减系数的次方,离现在越远的值所占权重越小。
当然,如果用这个公式去计算,那么代价是很大的,因为我们不得不分配相当可观的内存空间去存放这些参数,而且直至资源耗尽为止,这在手机平台上是不可接受的。
因此,我们使用取近似值的方法来计算上式中的,这种近似取值在听觉上是难以察觉的。
我们的近似值计算公式如下这样,我们便可以方便的计算和存储当前的差异值总和了。
现在,我们要做的就是计算出平均差异值,观察式我们不难发现,当的时候,权重系数就是个趋向于的几何级数。
以此我们得到下面的式子我们根据式最终给出平均差异值的定义这是种近似的计算,因为当越来越大的时候,较远时刻的差异值在总和中所占的比例会迅速衰减,最后几乎可忽略不计。
所以在计算平均值的时候,我们使用作除数代表了对当前对总和贡献最大的差异值个数。
南京邮电大学硕士研究生学位论文第五章流媒体客户端在智能手机上的实现网络代理模块详细设计此模块用于处理协议,如系统接入资源协商会话建立等信令。
在这里,我们使用了代理设计模式,这是种保护代理,由掌握着对单例对象的访问控制。
像模块对的数据读取请求就必须由来完成。
除了这些,它还负责与服务器间传递会话信息,用户信息及影片信息等。
同时,负责接收媒体服务器推送过来的数据流,然后存入中并设有重传机制来保证数据完整性,确保向提交的数据为完整无误的。
传输设计图中是我们重新定义的报文头部,修改了报头的些字段以应用于文中的流媒体系统。
主要将原有的字段改为存储偏移,这个是当前数据部分相对于整个媒体文件起始部分的偏移,用于有序的向内存文件中插入数据,以便还原文件原有的布局。
而同步源标识符则被替换成了会话标识符,用来标识每次会话的,主要用来处理将来系统升级为架构时,同时出现多个会话进程的情况。
最后将报文封装成报文传输。
当网络代理建立起次会话,会去等待媒体流,当接收到报文后会解析其中的字段,根据这些字段将数据放到内存文件中正确的位置,并调用内存文件的接口完成数据校验。
当确认数据完整后,网络代理才会去结束本次会话。
当有数据丢失时,内存文件的校验函数会返回这些数据缺口信息,网络代理会使用这些信息向媒体服务器请求重传,直至数据接收完整。
在数据接收过程中,网络代理会开启个超时定时器,来处理各种网络延迟服务器无响应等情况,防止程序进入僵死状态。
图报文头部南京邮电大学硕士研究生学位论文第五章流媒体客户端在智能手机上的实现网络带宽设计在无线网络环境中,存在较大的时延和抖动,所以,需要选择个合适的带宽来传输数据,并且要根据网络情况进行实时的调整。
由于这里的报文是基于传输的,所以我们不能通过友好流媒体传输机制的方法来实时计算带宽,而需要使用单数据包技术。
单数据包技术是向网络发送大小变化的探测数据包,由此统计到达目的端的时延来计算网络的带宽。
这里,我们将数据包本身作为探测数据包,如果知道了个大小已知的数据包经过条链路的时间,就可以计算出该条链路的带宽。
计算带宽时还必须考虑链路的传播时延,对于定的传输媒介,传播时延是固定的,在这里,我们不考虑网络的处理时延和发送时延,传输时间可以由下面的式子计算出为数据包的大小,为链路的传播时延,为链路的带宽,测试使用的网络下行带宽理论峰值为,考虑到具体环境影响,通常实用中无法达到理论带宽,所以我们需要动态计算实时的可用带宽。
客户端对每次会话中的每个包的时延进行统计,并计算出次会话中的平均时延,并将这个信息反馈给服务器,服务器将通过这些信息计算出可用的实际带宽,并以此控制媒体服务器的发送速率。
这样做虽然减小了带宽使用率,但同时减少了丢包率,提高了系统在高误码的无线网络环境中的鲁棒性。
南京邮电大学硕士研究生学位论文第五章流媒体客户端在智能手机上的实现内存文件映射模块详细设计内存文件映射模块主要用于在内存中存储来自网络的媒体数据,并提供与文件操作相似的读取写入等接口,并具有自校验功能以保证数据的完整性。
这样做的目的主要在于,如果使用手机上的外存作为缓存,那么对的频繁读写将会严重消耗手机的电量,并且定程度上影响到的寿命,这对用户来说是难以接受的。
所以,我们设计了内存文件,上层模块操作它就像操作普通文件样,只不过它存储于内存中,并可以实时增加删减,以保持尽可能少的内存占用。
内存文件映射理论基础内存文件是种基于红黑树结构的应用。
红黑树是种特殊的二叉查找树,具有自平衡的特性,它的各项操作在最坏的情况下也具有着良好的运行时间。
这使得它对时间敏感的实时应用如流媒体播放中特别有价值。
区别于普通的二叉查找树,红黑树每个节点都带有颜色属性,颜色属性只有两种值,红色或者黑色。
除了般二叉查找树的要求外,红黑树还需要满足下面的性质节点具有颜色属性,黑色或者红色。
所有的叶子节点必须是黑色。
树的根必须是黑色的。
每个红色节点的两个子女都是黑色的。
从任意个节点到达其每个叶子的所有路径都包含相同数目的黑色节点。
这些性质规定了红黑树的主要特点从根到叶子的可能的最长路径不会多于可能的最短路径的两倍长,这样的结果便是这个树看上去大致是平衡的。
而诸如插入删除和查找等操作的最坏情况时间都要求与树的高度成比例,因此这个高度上的理论上限使红黑树在最坏的情况下都可以是高效的,这是与普通二叉查找树最大的区别
