生活资讯
emby如何安装外部播放器插件
2024-12-31 06:32  浏览:107


前面两篇文章,我们分别讲了setdataSource和prepare的过程,获得了mVideoTrack,mAudioTrack,mVideoSourc,mAudioSource,前两个来自于setdataSource过程,后面两是prepare。

 

通过mVideoTrack,mAudioTrack我们找到了相应的解码器,并初始化了,下面我们就开讲mediaplayer如何播放了。前面的一些接口实现,我们就不讲了,不懂的可以回到setdataSource这一篇继续研究,我们直接看Awesomeplayer的实现。先看大体的时序图吧:

如果单是音频,直接播放

有视频时,发送event到queue,等待处理

       

       (3) postVideoEvent_l();

 

有视频,音频时,检查他们是否同步

 

 

在playe_l方法里,我们可以看到首先是实例化一个audioplayer来播放音频,如果单单是音频直接就播放,现在我们是本地视频播放,将不会走第二步,直接走第三和第四步。我们看下postVideoEvent_l()方法,跟我们在讲prepareAsync_l的类似:

mVideoEvent在我们构造awesomeplayer时已经定义:

所以我们看onVideoEvent方法:

 

我们看到通过read方法去解码一个个sample,获取videobuffer,然后render到surfaceTexture。

read 方法:

在讲read之前我们先来回顾下prepare时候的omxcodec::start方法,因为跟我们讲read有千丝万缕的关系,start方法:

由于我们以MP4为例,所以mSource就是MPEG4Source,MPEG4Source在MPEG4Extractor.cpp,我们看下start方法做了什么:

原来是设定输入的最大buffer.

我再看看allocateBuffers();

OMX_PARAM_PORTDEFINITIonTYPE 是component的配置信息。

OMX_PARAM_PORTDEFINITIONTYPE的参数从哪里来呢?原来来自解码器端,包括输入输出端的buffer大小,总数等信息。

当输出的时候走这里,给输出端分配内存空间,并dequeue buffer 到OMX。

从getParameter获得的每个输入/输出端的buffer大小和总数

复习完start方法,我们就来讲reader方法了:

先看drainInputBuffers方法,主要是从mediasource读取数据元,

mPortBuffers是我们allocateBuffersOnPort方法存下来的对应的输入/输出bufferinfo数据

循环每次输入端能填充数据的buffer总数,这是由component的结构决定的,各个厂商的解码器配置不一样

往buffer里面填元数据,给解码器解码

   

seek模式

       

 

读mediasource,我们以mpeg4为例,它的实现就在MPEG4Extrator.cpp(),根据seek模式和seek时间从sampletable里面找到meta_data。存到srcBuffer。

 

让bufferinfo的mData指向元数据的data

    

设置状态为OWNED_BY_COMPONENT

}

 

 

从上面的分析,我们得知emtyBuffer后在5msec之内会有个EmptyBufferDone回调,我们看下omxcodec对该回调的处理:

 -------------通过buffer_id找到Vector<BufferInfo> bufferInfo

设置info的状态为OWNED_BY_US

释放mediabuffer

下一片段buffer移交给component

没有数据了退出

锁定该buffer,准备render图像

fillbuffer后获得mVideoBuffer就可以在Awesomeplayer的onvideoEvent方法中的mVideoRenderer->render(mVideoBuffer);进行图像的显示了。

以上我们就是播放的过程了。到此多媒体本地播放流程全部讲完了,里面很多细节的东西,还得大伙自己深入理解,往后有什么需要补充和添加的,我会再次补充上。


    以上就是本篇文章【emby如何安装外部播放器插件】的全部内容了,欢迎阅览 ! 文章地址:http://ww.kub2b.com/tnews/3757.html
     栏目首页      相关文章      动态      同类文章      热门文章      网站地图      返回首页 企库往资讯移动站 http://ww.kub2b.com/mobile/ , 查看更多   
最新文章
耐水弹力海棉
产品属性用途区域产品包装、耐水 防潮密度0.02-0.18g/cm3原产地中国,江苏,常州品牌D-Foam形状可根据客户提供图纸生产颜色可根
耐水高强度海棉
产品属性用途区域产品包装、耐水 防潮密度0.02-0.18g/cm3原产地中国,江苏,常州品牌D-Foam形状可根据客户提供图纸生产颜色可根
防潮耐水EVA材料
产品属性用途区域产品包装、耐水 防潮密度0.02-0.18g/cm3原产地中国,江苏,常州品牌D-Foam形状可根据客户提供图纸生产颜色可根
耐油耐水海绵
产品属性用途区域产品包装、耐水 防潮密度0.02-0.18g/cm3原产地中国,江苏,常州品牌D-Foam形状可根据客户提供图纸生产颜色可根
供应耐水海绵
产品属性用途区域产品包装、耐水 防潮密度0.02-0.18g/cm3原产地中国,江苏,常州品牌D-Foam形状可根据客户提供图纸生产颜色可根
看了OPPO、vivo的新旗舰手机样张后,决定还是继续用微单吧
最近,OPPO、vivo都给出了自家旗舰手机的样张,大战一触即发。记得手机圈上一次这么火爆,还是小米15 Ultra的时候。具体来说,当
微信借钱不求人,6个步骤轻松搞定...手机微信怎么借钱「微信借钱不求人,6个步骤轻松搞定...」
微信,作为中国人日常生活中不可或缺的社交软件,不仅满足了人们的沟通需求,还悄然融入了金融服务,其中就包括微信借钱功能。无
小米8系列手机,有它才叫防摔保护手机爆屏「小米8系列手机,有它才叫防摔保护」
手机已成为日常生活必备品,而且小米8陶瓷后盖摔不得,维修的费用都赶上半个手机的钱了,选什么手机壳呢,贼难拆的磨砂硬壳?一
米其林指南开启江苏篇章,“江苏味”如何与世界“双向奔赴”
米其林指南作为餐饮界的“奥斯卡”,关注度高。2024年7月,米其林指南重调评价体系,转为省份榜单评选,并官宣江苏省、福建省成
重磅发布!5.4%!
4月16日,国家统计局发布的数据显示,一季度,在以习近平同志为核心的党中央坚强领导下,各地区各部门认真贯彻落实党中央、国务