对于http streaming,更新buffer进度的处理在AwesomePlayer::onBufferingUpdate()函数中,首先判断mCachedSource != NULL,即是http://流媒体的情况下,通过getBitrate(&bitrate)函数取得bitrate,然后计算出buffer的进度,通过notifyListener_l(MEDIA_BUFFERING_UPDATE, percentage)发消息,在MediaPlayer.cpp类对应MediaPlayer::notify函数接收到MEDIA_BUFFERING_UPDATE消息,然后在应用层通过注册MediaPlayer的setOnBufferingUpdateListener监听,接收到MEDIA_BUFFERING_UPDATE消息,即可以获得buffer更新的进度值percent。
1.AwesomePlayer::onBufferingUpdate()函数
计算buffer更新的percent
其中8000000ll为1byte以us为单位的bit数,单位long long类型,即1byte = 1byte * 8bits/byte * 1000000us = 8000000ll
2.AwesomePlayer::getBitrate函数
3.NuCachedSource2::getSize
调用其成员变量mSource的getSize函数取得当前更新的size大小,mSouce即为NuCachedSource2构造函数传递的参数,此参数为AwesomePlayer::finishSetDataSource_l()函数中创建mCachedSource对象时传递的类型为NuHTTPDataSource的参数mConnectingDataSource。
所以,mSource->getSize调用的是NuHTTPDataSource的getSize函数。
4.NuHTTPDataSource::getSize函数
此函数取得size值为mContentLength的值,取得mContentLength的值的处理在NuHTTPDataSource::connect函数,从http header中读取的,即从"Content-Length"或者"Content-Range"头域指定的值中计算出的。
NuCachedSource2和NuHTTPDataSource类以及getSize函数的关系图如下:
5.mediaplayer.cpp的MediaPlayer::notify函数
6.MediaPlayer.java的setOnBufferingUpdateListener函数
在onBufferingUpdate函数中的参数percent即为buffer更新进度值0-100.
分享到:
相关推荐
http live streaming protocol http live streaming protocol
http live streaming guide
spark Streaming和structed streaming分析,理解整个 Spark Streaming 的模块划分和代码逻辑。
HLS http live streaming 白皮书 draft-pantos-http-live-streaming
flume+Logstash+Kafka+Spark Streaming进行实时日志处理分析【大数据】
Http Dynamic Streaming 点播直播服务器搭建、原理
HTTP 流媒体传输, 视频网络传输技术
伴随流数据的到来,Spark SQL引擎会逐渐连续处理数据并且更新结果到最终的Table中。你可以在Spark SQL上引擎上使用DataSet/DataFrame API处理流数据的聚集,事件窗口,和流与批次的连接操作等。最后Structured ...
2012年3月HTTP Live Streaming (HLS) 视频直播技术的第8个版本的修订草案,常用的流媒体协议主要有 HTTP 渐进下载和基于 RTSP/RTP 的实时流媒体协议,这二种基本是完全不同的东西,目前比较方便又好用的我建议使用 ...
[MS-WMSP] Windows Media HTTP Streaming Protocol Specification (微软的http streaming 协议).7z
sparkStreaming job生成流程图
一个完善的Spark Streaming二次封装开源框架,包含:实时流任务调度、kafka偏移量管理,web后台管理,web api启动、停止spark streaming,宕机告警、自动重启等等功能支持,用户只需要关心业务代码,无需关注繁琐的...
Spark Streaming实时流处理项目实战.rar.rar
draft-pantos-http-live-streaming-16.doc Example Playlist Files for use with HTTP Live Streaming.doc HLS_Sample_Encryption.pdf HTTP_Live_Streaming_Metadata_Spec.pdf StreamingMediaGuide.pdf ...
#资源达人分享计划#
1.理解Spark Streaming的工作流程。 2.理解Spark Streaming的工作原理。 3.学会使用Spark Streaming处理流式数据。 二、实验环境 Windows 10 VMware Workstation Pro虚拟机 Hadoop环境 Jdk1.8 三、实验内容 (一)...
本科毕业设计项目,基于spark streaming+flume+kafka+hbase的实时日志处理分析系统 基于spark streaming+flume+kafka+hbase的实时日志处理分析系统 本科毕业设计项目,基于spark streaming+flume+kafka+hbase的...
最近花了半个多月的时间研读android源码中处理httplivestreaming的部分,其中包含了如何处理.m3u8文件,android内部如何缓冲视频流,包括后台线程始终获取数据缓冲的过程,以及缓冲没有命中时如何处理的等等,大致还...
http-live-streaming-10 翻译件
spark streaming streaming