关于手机端音视频技术的思考与经验

发布者:咖啡狐狸最新更新时间:2024-02-21 来源: elecfans关键字:手机端  音视频技术 手机看文章 扫描二维码
随时随地手机看文章

编者按:随着手机相机功能日益强大,4k,8k,各类特色短视频的拍摄,编辑、播放需求日益增长,短视频应用的火爆也对当前的手机音视频技术提出了更高的要求,如何更好地提高用户体验成为了行业共同的命题。LiveVideoStackCon 2023 上海站邀请了小米的吴昊,从一名开发者的角度为大家分享他关于手机端音视频技术的一些思考与经验。


大家好,本次我将从手机厂商音视频SDK开发的角度和大家分享工作中我总结的一些经验,也虚心接收更好的建议。

5e04db04-84df-11ee-939d-92fbcf53809c.png

目前我们的主要工作是开发小米内部自用的多媒体组件,它支持小米天气、相册、文管、短信、视频的业务领域涉及的本地播放、网络播放、音乐播放、图片浏览、视频编辑和新场景探索等功能。

5e23e576-84df-11ee-939d-92fbcf53809c.png

本次分享将分为五部分:一是从厂商角度介绍对手机音视频现状的理解;二是分享对平衡体验和资源占用的一些工作经验;三是基于网络播放场景列举具体的优化实例;四是介绍我日常使用的开源资源;最后进行一些未来展望。

-01-

手机音视频现状

 

提起手机音视频,大家的第一印象可能是上面列举的抖音、快手、爱奇艺和小米视频等在线视频平台,其中我们的小米视频是一个聚合平台,用户可以通过它观看各大流媒体平台的视频资源。

 

而手机厂商在此基础上还需重点关注本地视频播放应用的开发和优化。如上图所示,我们对小米手机的相册应用丰富了各种各样的功能,如视频变速播放、编辑、图片Seekbar浏览等。

此外,近年来各大厂商对手机影像的内卷之势也愈演愈烈,为了充分发挥硬件实力也在不断加强相机应用的各种功能。

5e9c588a-84df-11ee-939d-92fbcf53809c.png

我个人认为,当前的手机音视频应用具备以上几个特点:第一是便携性,这有助于提高用户粘度;第二是多功能性,除了单纯的播放功能外还要具备各种剪辑编辑相关的能力;第三是高清晰度,这是当今用户的基本需求;第四是实时性,保证用户可以随时随地使用;社交性和互动性可以为微信等社交应用提供服务。

-02-

性能与体验

5ead2b6a-84df-11ee-939d-92fbcf53809c.png

接下来分享我个人对平衡体验和资源占用的一些优化经验。在此之前首先向大家推荐小米公司的官方应用小米社区。我们的产品经理和研发会不时参与社区讨论,并从社区话题中选取大家感兴趣的新功能进行立项研发,欢迎小米用户们积极发表自己的想法和建议。

5ed12e20-84df-11ee-939d-92fbcf53809c.png

依据自网络和小米社区的调研结论,我们发现对于音视频应用。用户主要关注以上几点特性:一是满足用户的画质需求;二是需要支持各种不同的视频格式;三是除播放外应具备更多的功能(如视频编辑等);四是要保证播放的流畅度;五是要提高应用稳定性;六是要尽可能节约设备电量。

5ee842b8-84df-11ee-939d-92fbcf53809c.png

通过分析提炼用户需求,我们在技术上将其转换为具体的优化方案。

5ef700fa-84df-11ee-939d-92fbcf53809c.png

我们认为可以从以上六个方面来展开优化。

5f17c696-84df-11ee-939d-92fbcf53809c.png

首先,控制包体积有效缩短了APK的下载时间,使用户可以更快地安装应用程序;其次是有利于节约手机设备的存储空间;第三是更小的APK启动速度更快,应用程序响应更迅速,提高了用户体验;最后,压缩APK体积减轻了传输时占用的网络带宽,节约了厂商的网络和存储成本。

5f2a36fa-84df-11ee-939d-92fbcf53809c.png

以上是我总结的几项优化方案:一是精简动态库符号表;二是去除无用代码,依据场景需求优化调用逻辑,减少代码调用层级;三是对FFmpeg进行定制化编译。

5f513cbe-84df-11ee-939d-92fbcf53809c.png

内存占用优化一是可以有效控制因应用占用内存大,内存堆积溢出导致的OOM,或是容易被系统清理的问题;二是减少频繁GarbageCollection (GC)导致的应用卡顿、掉帧现象;三是从手机厂商角度需尽量避免原生应用内存占用大,变相挤压第三方应用运行环境。

5f632f00-84df-11ee-939d-92fbcf53809c.png

针对安卓平台,首先可以使用Android studio、dumpsys或meminfo等工具对应用进行内存占用分析,明确大内存分配的代码并评估必要性,为后续优化提供决策依据;

二是减少频繁内存创建销毁,借助jemalloc等内存分配器,可以实现对一些重复对象的复用;

三是减少数据的拷贝流转。

5f832f08-84df-11ee-939d-92fbcf53809c.png

作为手机厂商,应用功耗是我们高度关注的一项指标,控制功耗首先有利于减少手机的充电次数,延长电池寿命;其次可以减少手机发热,降低硬件损耗;三是发热更少可以避免手机CPU频繁降频,有利于提高设备的整体性能和相应速度。

5f9e24d4-84df-11ee-939d-92fbcf53809c.png

控制功耗首先可以在不影响应用运行的前提下尽量降低网络访问频率;第二要充分考虑VPU、CPU和GPU的特性,合理分配硬件资源;第三要做好无用线程的排查;第四是可以依据实际情况将显示模式切换为surfaceview。

5fb5521c-84df-11ee-939d-92fbcf53809c.png

从优化SDK网络播放的角度,提升流畅性可以采取以下措施:

一是做好视频文件的数据调整,如注意mp4文件moov box的排列顺序等;

二是可以采用数据预缓存;三是采用视频预渲染;四是优先考虑硬解。

5fc62fb0-84df-11ee-939d-92fbcf53809c.png

提升应用稳定性首先可以在平时的工作中保证随时自动化测试的条件,提高效率;二是要重视预防和监控,可以成立一些代码评审监控机制;三是针对发现的问题要做好举一反三。

5ff46164-84df-11ee-939d-92fbcf53809c.png

丰富应用的特色功能是维持用户粘度的关键。做好这点首先要注意多和业务相关的各方交流讨论,广开思路;二是要及时关注其他平台的特色功能,并考虑手机应用场景及实现技术,研究移植的可行性;三是从自身角度努力提升技术实力,多关注新兴技术,与时俱进。

-03-

场景案例

600bc714-84df-11ee-939d-92fbcf53809c.png

接下来介绍一个基于网络播放场景的优化案例。在该案例中,业务方对网络播放的起播速度提出了更高要求。

由于向业务方最初提供的SDK集成了在线、本地视频播放和视频编辑等功能,本身体积过重,优化空间有限,因而我们决定基于纯网络播放推出专门的播放器内核,提高起播速度。

6038f68a-84df-11ee-939d-92fbcf53809c.png

各位开发者在规划优化方案前要注意做好调研,与产品方做好沟通,明确具体优化需求,本次该案例从业务方角度提出的需求包括起播速度快、SDK体积小、快速切换和内存小四项。

从开发者角度,为了便于后续成果复用,响应用户可能提出的额外需求,有必要对SDK接口的简单化和可拓展性做出考虑。

60528eb0-84df-11ee-939d-92fbcf53809c.png

基于以上需求我们进行了架构选型调研。综合考虑开发时间,适配难度,后期维护以及成果复用的最大化,最终决定基于原有播放器框架进行精简及模块化,并就稳定性及起播耗时等核心指标进行专项开发。

6066caa6-84df-11ee-939d-92fbcf53809c.png

我们从以上几方面着手压缩SDK体积。首先是分离原播放器中与网络播放场景无关的功能;其次是有针对性的选取满足用户需求的网络协议、封装格式和编码格式;最后是针对网络播放场景简化原有判断逻辑。

607ae838-84df-11ee-939d-92fbcf53809c.png

播放器架构优化前后的对比如上所示。

60909854-84df-11ee-939d-92fbcf53809c.png

在该案例基础上,我们正在考虑将原有体积重,集成各种功能的播放器SDK解耦为功能池,后续依据不同用户的场景需求进行针对性的架构定制。

60a1e2f8-84df-11ee-939d-92fbcf53809c.png

对优化内存占用我们采取了以上措施:一是通过内存分析找到高占用的代码,进行针对性优化;二是进行缓存区优化,如自定义内存管理、进行缓存区调优等;三是针对Android平台采用MediaCodec直接送显;最后是将显示模式切换为surfaceview。

60c96e0e-84df-11ee-939d-92fbcf53809c.png

在该案例中,缩短起播时间是业务方的核心需求。我们对不同起播时间给用户带来的感受进行了分析,结论如上表所示。

视频起播从SDK开始到显示播放需经历以上五个阶段,我们在各个阶段采用了一些相对简单的优化策略。

60d8d09c-84df-11ee-939d-92fbcf53809c.png

首先在申请url地址阶段,可以在部分场景下提前获取视频url;在DNS解析阶段,可以酌情考虑采用host缓存,缩短解析时间;在连接服务器阶段,可以考虑进行服务端调优;在数据缓存阶段,可以提前缓存部分数据;在解码显示阶段可以选用支持快速解码的解码器。

61059e24-84df-11ee-939d-92fbcf53809c.png

针对手机侧优化我们采用了以上方案。

611fdc08-84df-11ee-939d-92fbcf53809c.png

经过测试,我们在该案例中选择预缓存待播视频的开头1到2秒,大家在实际工作中可以结合场景需求自行调整需要缓存的时长。

6130231a-84df-11ee-939d-92fbcf53809c.png

通过复用提前缓存时分配的缓冲区buffer,可以有效降低起播缓存区的水位线,提高抗网络抖动能力。

6146aa90-84df-11ee-939d-92fbcf53809c.png

针对快速切换播放多个视频的场景可以采用播放器多实例方案。在前一个视频播放时,提前创建另一个播放器加载下一个视频,后续以此类推。

615bee82-84df-11ee-939d-92fbcf53809c.png

鉴于精确seek受网络条件影响可能会拖慢画面送显,我们会基于用户主观体验设置时间阈值(该案例下为900ms),如果精确seek所需时间超出该值则先送显该时点下能够解码的画面,避免长时间黑屏等待。

616cfe52-84df-11ee-939d-92fbcf53809c.png

换个角度考虑,针对相同问题,从资源侧进行优化有时效果要胜于SDK侧方案。

6191a73e-84df-11ee-939d-92fbcf53809c.png

在验证优化可行性时,我使用apache2搭设了自有服务器辅助测试,其中上图右侧展示了设置网速限制的过程。

61a6a3f0-84df-11ee-939d-92fbcf53809c.png

我发现在预缓存请求网络MP4时,会出现MP4文件头和文件尾来回请求的情况,这增加了播放耗时。

61bfd29e-84df-11ee-939d-92fbcf53809c.png

这实际上是包含视频索引信息的moov在MP4文件中后置导致的。

在使用FFmpeg将其改为前置后,缓存机制可正常生效,短视频起播明显加快。

61d729f8-84df-11ee-939d-92fbcf53809c.png

调整moov位置后的MP4文件box tree如上图所示。

61e6462c-84df-11ee-939d-92fbcf53809c.png

moov会随着视频时长的增加而变大,例如上图中两小时左右的视频moov体量达到了约4MB。由于播放前需全部下载,导致起播速度仍然较慢。

61fd64ba-84df-11ee-939d-92fbcf53809c.png

为了缩短长视频起播时间,我考虑将mp4改为ts流,使播放器可以从视频流的任一片段独立解码,但导致seek的速度较慢。

通过改为使用HLS流,使起播和seek速度都获得了大幅提升。

6213b13e-84df-11ee-939d-92fbcf53809c.png

综上,代码优化需要我们明确需求、逐项拆解从而精准施策。

同时要注意与各方形成合力,从多角度进行分析,还要考虑代码的模块化。

-04-

开源资源

622589ea-84df-11ee-939d-92fbcf53809c.png

接下来介绍几个我日常较多使用的音视频开源软件。

6243a2ea-84df-11ee-939d-92fbcf53809c.png

Mp4box是一个可以在线解析、查看MP4 box结构的工具。

 

Bento4是一款用于读写MP4文件的专业开源库。

 

YUView是我个人强烈推荐的一款码流分析软件,它支持带封装视频解析和显示、支持H.264/H.265/H.266/AV1裸码流解析和显示。

629eef06-84df-11ee-939d-92fbcf53809c.png

它支持查看H.265流的详细码流分析信息,包括Slice个数、CU划分、CU模式类别、参考帧索引、运动矢量等等。

62aed362-84df-11ee-939d-92fbcf53809c.png

它支持对比两段视频。

62c95f98-84df-11ee-939d-92fbcf53809c.png

它支持类似mediainfo的媒体信息显示。

62e0cea8-84df-11ee-939d-92fbcf53809c.png

它支持各种媒体编码信息查询。

62f1681c-84df-11ee-939d-92fbcf53809c.png

它支持查看码流变化曲线。

632072ba-84df-11ee-939d-92fbcf53809c.png

biTStream由一系列C语言的头文件组成,它是在MIT许可证下发布的,可以辅助进行代码字节和结构解析。

-05-

未来展望

  ARVR技术的应用:随着ARNR技术的不断发展,未来音视频可能会更加注重增强现实和虚拟现实的体验,例如通过AR技术将虚拟物品融入到现实场景中,或者通过VR技术让用户身临其境地体验音视频内容。

  5G技术的应用: 5G技术的到来将会使得音视频的传输速度更快、延迟更低,这将为用户提供更加流畅的音视频体验,同时也将为音视频应用的创新带来更多的可能性。

  AI技术的应用: AI技术的发展将会为音视频应用带来更多的可能性,例如通过语音识别技术实现智能语音交互,或者通过图像识别技术实现智能视频分析等。

最后从个人角度分享一些未来展望。一是随着AR/VR技术的不断发展,未来音视频可能会更加注重增强现实和虚拟现实的体验;二是5G技术的到来会加快音视频的传输速度,为应用创新带来更多可能性;三是AI技术的发展将为音视频应用带来更多可能。


关键字:手机端  音视频技术 引用地址:关于手机端音视频技术的思考与经验

上一篇:基于MEMS麦克风高带宽加速度计的声学性能设计
下一篇:泰凌微电子2.4GHz 4对1会议麦克风方案介绍

推荐阅读最新更新时间:2024-10-28 06:42

云之家企业通讯录正式亮相手机客户
日前,拥有30万用户的企业社交网络云之家,新增企业通讯录功能的1.9.1版正式登陆APPStore及Android市场。 据了解,云之家企业通讯录是目前针对中小企业最易于使用的免费通讯录云管理软件,一键导入通讯录实现数据同步,轻松方便。员工实行自主维护、互助维护,充分发挥了社交化的协作特性,保持通讯录数据更新。 云之家新增的企业通讯录,通过手机客户端可随时随地搜索、查看、转发所需通讯录,内部员工沟通和协作简单、快速。 企业通讯录的数据部署在云端,安全私密。所有访问和修改均通过企业授权或监控,避免信息泄密给企业带来困扰。同时,对于那些依靠行政后勤或HR人员来维护管理Excel通讯录的企业来说,可以有效的降低成本。
[网络通信]
云之家企业通讯录正式亮相<font color='red'>手机</font>客户<font color='red'>端</font>
手机屏幕太小?MHL技术传递音视频极致体验!
  还在嫌弃你的手机屏幕太小吗?是否想将手机上的应用和功能展现在大屏上呢?让MHL技术来助你实现梦想吧...MHL通过一根线将手机与电视相连,从而将手机的画面投射到大屏幕上,即可传递出所有音视频极致的体验   手机功能越来越多,越来越好用,但屏幕终究太小了。更大的屏幕、更震撼的音响、更爽快的交互体验,比如用户要玩《极品飞车》游戏的时候,智能手机怎么能被利用起来?   “手机这屏太小,要把它展现在一个大屏上面,就要把手机跟大尺寸显示屏相连,使它可以传递出所有音视频极致的体验。”MHL联盟总裁Judy Chen在接受《第一财经周刊》采访时表示,“MHL标准的设立就是为了解决这个功能,让智能手机变成一个PC、网络电视或者是游戏机
[嵌入式]
深维科技联手赛灵思,带来全新音视频图像处理技术方案
2019年12月13日,专业的音视频技术大会LiveVideoStackCon 2019第二场如期在深圳举行,赛灵思联合众多视频处理领域的合作伙伴共同为业界带来了精彩的演讲和实例演示。 图注:深维科技作为赛灵思中国最佳图像处理领域解决方案供应商(ISV)出席深圳 LiveVideoStackCon 2019 深维科技作为赛灵思中国最佳图像处理领域解决方案供应商(ISV)出席了此次活动。通过现场展示和技术宣讲,从并发度、吞吐量、处理延迟等各个方面都大幅超越 CPU的深维科技图像加速方案ThunderImage JPEG2JPEG 收获了现场观众给关注与肯定。 ThunderImage JPEG2JPEG是深维科技在20
[嵌入式]
深维科技联手赛灵思,带来全新<font color='red'>音视频</font>图像处理<font color='red'>技术</font>方案
大联大品佳集团力推NXP Smart Audio PA在手机应用
2015年6月11日,致力于亚太地区市场的领先半导体元器件分销商 大联大控股宣布,其旗下品佳推出NXP Smart Audio 音频芯片--- TFA9890/TFA9897。该IC可为微型扬声器提供超过3.6 W RMS功率(以前限为0.5 W),将为手机、便携式音乐播放器和平板计算机带来更高的音量、更浑厚的低音与更出色的音质,而且不存在损坏扬声器的风险。TFA9890&TFA9897集成了智能CoolFlux DSP,其作用在于即使一直处于近峰值输出状态,也可安全工作有效的保护喇叭。 图示1-大联大品佳代理的NXP的TFA9890/TFA9897照片 随着智能手机的兴起,其更轻薄、更智能、更省电的特性却为手机音质的
[手机便携]
大联大品佳集团力推NXP Smart Audio PA在<font color='red'>手机</font><font color='red'>端</font>应用
NB、中手机新增指纹识别 IC需求量能倍数增加
虽然指纹识别芯片报价的持续下探走势,仍是国内、外指纹识别芯片供应商的最大营运压力,但在指纹识别应用正不断从智能手机、平板电脑等移动装置产品市场,扩大到PC、NB、金融卡、云端应用、智慧家庭及车用电子等更多元的新兴产品商机上后,配合原有移动装置内建的指纹识别芯片商机,也不断往需求量能多出好几倍的中、低阶产品市场拓展,台系指纹识别芯片供应商仍看好2017年下半的出货成长潜力,甚至直言2018年以前,公司指纹识别芯片出货量应该都可以步步高升,至于毛利率下滑问题,则视各家成本降低方案的竞争力,在这一波全球指纹识别芯片市场明显出现价跌量增的趋势下,先抢市占率大宗,才是台系IC设计公司的当务之急。   神盾虽然2017年上半指纹识别芯片出货水
[半导体设计/制造]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved