前端街猫自研多媒体能力介绍哈啰技术

所以需要自研多媒体框架去解决/优化上述问题,以便后续能够更好的支撑业务发展。

支持Android7.0以后,将mediacodec部分从mediaplayerservice里抽离出来,单独开了一条新的binder服务media.codec来开放系统的硬编解码能力,系统要开放,必须要有标准,让各个硬件平台根据标准来开发其硬编解码器,然后集成到media.codec中,这个协议就是OpenMax。

OpenMax分为三层:

OpenMax是多媒体框架标准,目前应用最广泛的是IL层,各个硬件平台只需要依托IL层协议,提供统一的抽象层接口,屏蔽各自在底层适配时存在的差异,最终打包到libstagefrighthw.so,由mediacodecservice加载后,以binder服务的形式,将硬编解码能力开放给有需要的多媒体应用,包括OpenMaxAL,ffmpeg,nuplayer,exoplayer,街猫多媒体组件等等。

街猫多媒体底层依托于ffmpeg,从而具备了覆盖多媒体全应用场景的底层能力,基于ffmpeg4.2.2源码,我们目前主要做了如下定制化:

上图是视频播放器的基本流程,source、demux、decoder、output

市面上绝大多数播放器的基本结构都是如此,不同的是在实现方式上会存在差异。

下面拿ffmpeg/examples/transcoding.c做介绍,这是一个转码的参考工程:

ffmpeg使用AVPacket来存储编码的帧数据,解码后的音视频帧数据,统一使用AVFrame来存储。

音频帧数据存储音频解码后的pcm数据,在ffmpeg内部有Packed和Planar两种存储方式:

RPacked格式,frame.data[0]或frame.extended_data[0]包含AVFrame保存的所有pcm数据

Planar格式,frame.data[i]或者frame.extended_data[i]表示第i个声道的数据

AVFrame.data数组大小固定为8,如果声道数超过8,需要从frame.extended_data获取声道数据,extended_data是为了支持更多的声道数,后期扩展的字段。

Planar是ffmpeg内部的数据格式,常规的都为Packed,从命名上,Planar一般都在Packed命名后+P,比如sampleformat为16bit,Packed命名:AV_SAMPLE_FMT_S16,Planar:AV_SAMPLE_FMT_S16P。

除了data/extended_data,AVFrame保存音频数据其他四个核心字段:format(AVSampleFormat),sample_rate,channel_layout,nb_samples。format-指的是单帧的存储格式,可以通过该值来确定是packed还是planar,以及存储大小,16bit或float等sample_rate-采样率channel_layout-声道数nb_samples-AVFrame中包含的采样数(单声道)

所以,我们通过sample_rate和nb_samples就可以得出AVFrame包含pcm数据的播放时长,通过formatchannel_layoutnb_samples就可以得出AVFrame中buffer的长度

**视频帧数据存储

**视频帧数据采用YUV格式,其中Y指亮度通道,UV指色度通道,主流的采样格式有:YUV444、YUV422、YUV420YUV4::,简单点理解就是,以4个像素为一采样组,每个像素固定有一个Y通道,YUV后面UV对应的数值,以2为单位对应一组UV色度通道,注意,UV是一组,不要将其分开,基于这个去理解YUV4:2:2和YUV4:2:0采样方式,会更容易点对于大分辨率的视频帧,相邻像素的色度通道差异是极小的,所以YUV420格式在保证图像质量的情况下,又大幅的降低了存储,是目前主流的帧格式,接下去重点介绍下YUV420在ffmpeg,即AVFrame里的存储,YUV420根据Y,U,V数据的存储方式,又细分出YUV420P,YUV420SP(NV12)等子格式

YUV420P:YYYYYYYYUUVVY分量、U分量、V分量分别占一个平面空间,4个像素的Y分量共用一个UV分量

YUV420SP:YYYYYYYYUUVVY分量占一个平面空间,UV交差存储占一个平面空间,4个像素的Y分量共用一个UV分量

二者的差异,就是UV分量的存储方式,AVFrame保存YUV数据,主要用

uint8_t*data[AV_NUM_DATA_POINTERS];intlinesize[AV_NUM_DATA_POINTERS];data保存平面对应的向量数据,linesize保存平面对应向量数据的长度,所以yuv420p有三个平面,data数组有效长度为3,yuv420sp只有两个平面,有效长度就只有2。

ffmpeg也提供了辅助计算函数:timestamp(秒)=pts*av_q2d(time_base)

ffmpeg内部filtergraph处理流程

filtergraph建立后,会监听sourcefilter的sourcebuffer,如果有AVFrame塞入,filtergraph就开始运作,通过filterchain处理完后,从sinkfilter的sinkbuffer中取出,格式为AVFrame。

上述工程里initFilter代码流程:

然后在帧处理的时候:

步骤2和3创建了source和sinkfilter,workfilter则是使用avfilter_graph_parse_ptr传入filterspec,ffmpeg会解析spec创建内置的filter,当然,我们也可以实现自定义的filter塞入到filtegraph中。

THE END
1.APP作品展示街猫APPx街猫智能流浪猫管理猫屋伍拾设计APP作品展示 街猫APP x 街猫智能流浪猫管理猫屋,伍拾设计,UI,APP界面,列表页,APP ,登录页,移动端界面,手机界面,小程序,引导页,站酷网,中国设计师互动平台.https://www.zcool.com.cn/work/ZNzAxODcwOTY=.html
2.新快报■棠下智汇Park里的一个智能猫屋附近,一只流浪猫吃饱后走出猫屋。 ■在天河区壬丰大厦停车场附近,一位市民正在猫屋旁更换给猫咪喝的水。 直播间里,一只橘色流浪猫正在认真“干饭”,屏幕的对面,是一群爱猫人士在“云喂猫”……这欢乐温情的一幕,出现在一款名为“街猫”APP的聊天室中。近日,新快报记者走访发...https://ep.ycwb.com/epaper/xkb/h5/html5/2024-05/29/content_1506_648467.htm
3.街猫app下载街猫app1.15.7安卓版下载【软件介绍】街猫appp(里诺软件站提供下载)是一款非常好用并且又十分优质的用于去云养猫的软件,在这里能够在线支付然后就会实现给猫猫投喂猫粮,同时使用用户还能在线观看到流浪猫的吃猫粮的视频,是非常的好用。http://www.lenosoft.com/down/4721.htm
4.街猫屋从民乐上河坊路过,看见一个街猫屋,有两只猫咪在里面吃东西,当时还没有反应过来,走近时很快就跑走了,里面有水和食物,不过食物上面有虫子在飞。 一只猫咪没有走远,比较瘦。 百度说,这是哈啰街猫打造的智慧流浪猫屋,通过扫描哈啰街猫小程序可实现远程监测、科技喂养,街猫智能猫屋已经落地深圳,为社区流浪猫管理提...https://m.dianping.com/ugcdetail/239596794?sceneType=0&bizType=29&msource=baiduappugc
5.综漫猫屋餐厅txt微盘《[综漫]猫屋餐厅》最新章节:《[综漫]猫屋餐厅》最新章节 187、Menu.187 卤肉饭 2024-05-03小说简介:晋江vip2018.05.09完结总书评数14273当前被收藏数20898【】商店街的一角里,有着一家小小的餐厅。小店的新老板是位有着浅栗色长发的温柔少女,或许是很喜欢猫吧,门上绘着可爱的黑猫图案,小店的名字也唤作「猫屋餐厅」。在此间...http://l.xinremenxs.com/book/57_1279364_18800637.shtml
1.街猫app怎么看附近猫屋街猫app申请猫屋方法街猫app怎么看附近猫屋 街猫app申请猫屋方法 打开手机的街猫软件,点击下面的申请选项。 点击上面的申请猫屋选项。 最后输入信息,进行申请猫屋即可。https://www.liqucn.com/article/347177.shtml
2.街猫官网版下载街猫app下载手机版v1.26.5在街猫软件中,用户可以帮助身边的流浪猫。当你在生活中发现流浪猫却不知道该怎么办时,你可以及时联系软件上的救助中心,他们会妥善收养猫咪。本软件自主开发的“街猫智能流浪猫管理猫屋”,通过连接街猫APP,实现猫屋的智能喂水、喂粮,从而改善流浪猫的生存环境。 街猫app怎么看附近猫屋 1、在本站下载街猫app后,...https://www.6niu.com/mj/133489.html
3.街猫app怎么看位置?喵百科要查看街猫app的位置,首先需要打开该应用程序并登录。然后,转到应用程序主页并选择“地图”选项。https://moecats.com/question/77839.html
4.哈啰街猫app官方版哈啰街猫app最新版下载v1.27.6哈啰街猫app官方版(原名:街猫)是一款流浪猫社区收养平台,用户可以通过该软件来进行云投喂猫粮、喂水等操作,进而改善流浪猫生存环境,并且还能和线上爱猫人士进行沟通互动,分享养猫心得,一起云养猫,对此感兴趣的朋友快来加入我们吧! 街猫app怎么看附近猫屋? 1、在本站下载街猫app后,开启定位可发现附近猫屋; ...https://www.qimu86.com/soft/89670.html
5.哈啰街猫官方下载哈啰街猫app下载v1.34.0官方版哈啰街猫app,为广大爱猫的小伙伴打造的云养猫平台,在线养猫吸猫,与猫友在线交流,分享养猫心得,一起云养猫,关爱流浪猫。 街猫是干什么的? 哈啰孵化的一个创新、科学与互助的流浪猫关爱社区。 旨在用科学手段支持更多人参与到流浪猫关爱与社区环境治理行动 街猫怎么看附近猫屋? 1、打开街猫APP,授予权限,开启定...https://m.qqtn.com/q/829801
6.街猫app官方版下载哈啰街猫手机版下载v1.33.0街猫的用户群体全部为痴迷于猫文化的人士,他们不仅在猫友圈内与其他爱猫者交流互动,共同探讨养猫心得和经验,更能够从多种类型的猫屋类别中寻找心仪的选择。 街猫app怎么看附近猫屋 1、下载并安装"街猫"之后,启动定位功能便能轻松发现周围的猫屋位置; 2、或者您也可以直接在主页面的右上角搜索栏中输入关键词...https://www.4399i.net/down/sr-358012.html
7.用户花钱“云养猫”,也有居民不乐意流浪猫屋能不能进小区?居民吵...据“街猫”相关负责人介绍,从去年10月底进入无锡,已在无锡投放了近700台设备,主要集中分布在滨湖区和新吴区。App可监控猫屋每日运行数据,对流浪猫咪进行标记,电子体重秤会感应猫咪重量,通过数据的采集,为流浪猫们建立起一份独家档案,为后续的TNR(绝育手术)和领养打好基础。“订阅直播间后可以收到来猫提醒,进入...https://wxrb.com/doc/2024/03/26/339496.shtml
8.街猫流浪猫云喂养绝育领养enAppStore这些都是街猫用户真实的声音,也给予了街猫团队在探索智能化管理流浪动物的这条路上无法比拟的动力。 Novedades 2 ago 2024 Versión 1.30.5 直播间「瞬间」模块上线,eeef们终于可以沉浸式欣赏精彩的猫屋画面了! Privacidad de la app El desarrollador (广西哈宠网络科技有限公司) indicó que, entre las práctic...https://apps.apple.com/ve/app/%E8%A1%97%E7%8C%AB-%E6%B5%81%E6%B5%AA%E7%8C%AB%E4%BA%91%E5%96%82%E5%85%BB%E7%BB%9D%E8%82%B2%E9%A2%86%E5%85%BB/id6446309235
9.[讨论]崩溃,小区被申请街猫怎么办本来都快绝育完了rt,苯人未成年所以经济有限,只绝育母猫,亲人些的都抓去tnr了,就好像剩一只特难接近的三花和俩小白(不知公母),最近刚买捕猫笼想干掉,结果被人申请这个,我投诉不掉,另一边还有学业压力。最近再去投喂时候发现那只三花生了一窝小猫,眼都没睁开。。。我真的救命了,这一窝又得多少只母的,而且性格遗传问题也...https://www.douban.com/group/topic/301559264/
10.九州散策去(福冈由布院熊本人吉),旅游攻略15、【宠物】由布院の猫屋敷 地址:大分県由布市湯布院町川上1511-5 营业时间:09:30–18:00 16、【工艺】ガラスの森玻璃之森 地址:大分県由布市湯布院町川上1477-1 营业时间:09:00–17:30 17、【童话小镇】Yufuin Floral Village 英国风主题公园,房子都矮矮小小可爱风得,有些卖工艺品,有些则圈养...https://m.mafengwo.cn/i/22744905.html
11.猫控类手游排行榜VIVO手机猫控游戏大全街猫的出发原点来自于一个真实发生在上海某小区流浪猫投喂的故事,经过一年多研发与探索我们逐渐清晰并坚定了我们的使命:利用互联网科技,联接更多人一起参与,实现人与动物和谐共处。【人与动物 和谐互动】在猫屋直播间你可以远程投喂流浪猫猫、狗狗、刺猬、松鼠等小动物,有激萌小奶猫与猫屋志愿者一起在镜头前感谢...http://vip.diandian.com/phb/953/4-1.html