一般在直播间搭建的过程中,由于视频直播是比较消耗性能资源的,所以在添加其中每一个功能的时候,是需要谨慎的去考虑性能成本的今天来介绍一下封装短视频音效开发时的处理思路,通俗点讲就是主播在进行开播时播放音乐的功能是如何实现的。
1.性能方面,利用lrucahe实现固定内存持有的音频资源数,将使用频率最低的音乐资源释放,来保证我们的内存不会持续性的增大:

 lruCache = new LruCache<String, CacheId>(maxMusicLoadNum) {@Overrideprotected int sizeOf(String key, CacheId value) {return 1;}@Overrideprotected void entryRemoved(boolean evicted, String key, CacheId oldValue, CacheId newValue) {removeAndReleaseOldSound(oldValue,newValue);super.entryRemoved(evicted, key, oldValue, newValue);}
};

2.声音加载动作首先加入队列里面,等待音频下载完或者load进入内存中,当所属的音乐资源加载完毕,再进行消费.但是超过最大等待数的时候,会选择丢弃动作。

if(linkedBlockingQueue.size()<maxWaitMusic&&!resource.isReload()){linkedBlockingQueue.add(resource.key());
}else{SoundLog.e("当前音乐动作已经超过同时最大缓存限制,或者您开启的是预加载模式",this);
}

3.生命周期的管理,及时的根据android组件的生命周期进行相应的响应处理非常重要,会避免很多的性能问题,这里我们借鉴了glide源码的实现,进行自动化的生命周期管理:

 if(lifeCycleModel==LifeMode.AUTO){LifeFragment lifeFragment= BindUtil.bindLifeFragment(context);LifeListner voiceLifeMannger=new VoiceLifeMannger(context,this);lifeFragment.join(voiceLifeMannger);
}

直播间源码拓展方面:
1.我们在设计代码的时候将每个更小的子功能抽象成若干个模块,实现可插拔替换的目的,例如:

setiFileDownLoader(new IFileDownLoader() {//您可以自定义下载管理,但需要实现相关接口       @Overridepublic void download(String s, String s1, FileListner fileListner) {fileListner.success(s);}})

2.核心的实现类实现了和IAudioPlayer,SoundResource.ILoader,未来我们如果增加音乐播放会很方便,SoundResource 和其iloader接口让核心实现类和音频加载实现了解耦,内部还有很多逻辑模块都是通过接口约束和引用的,在此不一一赘述。
以上就是在直播间搭建过程中短音效开发的源码实现方式,最终完成的配乐/伴奏功能也能够给用户在观看直播的过程中增添乐趣,从而在一定程度上增加用户黏性。

直播间搭建中关于短音效开发的直播间源码实现方式相关推荐

  1. 直播平台搭建中使用Nginx推流多个直播平台解决方案

    直播平台搭建中使用Nginx推流多个直播平台解决方案 一.业务场景 最近公司的直播业务中,接入了多个第三方的直播服务(网易云信和腾讯云),公司使用OBS进行推流,需要同时推流到两个平台,但是一个OBS ...

  2. 如何在直播间搭建中看到帅哥美女?

    如何在直播间搭建中看到帅哥美女? 三个名词系列 我这里列三个名词系列,你先大致有个印象. 1. 名词系列一: AVI.MPEG.RMVB.MP4.MOV.FLV.WebM.WMV.ASF.MKV.例如 ...

  3. 直播平台搭建,直播间搭建中关于直播推流的三种常见协议

    直播行业经过爆发式增长后"荷尔蒙经济"逐渐减退,如今的直播行业商业模式已经趋于成熟,并开始进入发展的新阶段.直播平台搭建项目也早已成为热门开发项目,但是在进行项目开发之前,关于直播 ...

  4. Android直播软件搭建中实用的录制编辑方案有哪些

    Android直播软件搭建中实用的录制编辑方案有哪些 经大量数据显示,直播已经发展成为一种全民参与.共享和生产的文化现象.它的火爆不仅丰富了大众的艺术审美水平和精神文化,而且也影响了一代人的世界观.人 ...

  5. 详解音视频直播平台搭建中的低延时

    详解音视频直播平台搭建中的低延时 音视频实时通讯的应用场景已经随处可见,从"吃鸡"的语音对讲.直播连麦.直播答题组队开黑,再到银行视频开户等.对于开发者来讲,除了关注如何能快速实现 ...

  6. 在直播软件搭建中,如何基于rtmp实现视频直播?

    最近几年直播软件搭建可谓大火,这也就导致了在视频直播领域,有不同的商家提供各种的商业解决方案,包括软硬件设备,摄像机,编码器,流媒体服务器等.本文要讲解的是在直播软件搭建中,如何基于rtmp实现视频直 ...

  7. 网络直播平台搭建中直播协议和视频推流

    网络直播平台搭建中直播协议和视频推流 直播协议 流媒体分为直播和点播.通常来说点播使用的都是HTTP协议,直播主要用的是RTMP, HLS, HTTP-FLV等.近年来直播协议也有新发展如DASH,但 ...

  8. 直播平台搭建中你需要注意的小细节

    直播平台搭建的意义是为了实现完整的直播流程,为了完成直播平台搭建,就必须其中蕴含着那些步骤! 1.采集 采集又称数据获取,在直播流程的层面上来讲,是利用摄像头等工具,从系统外部采集数据并输入到系统内部 ...

  9. 微信云开发Al短视频一键换脸小程序源码

    微信云开发Al一键视频换脸小程序源码是由极客二改后发布的,小程序增加了广告控制, 插屏广告,激励广告和原生广告,由于采用了微信云开发没有后台, 所以不需要域名和服务器也可以正常搭建使用,所有的配置都可 ...

最新文章

  1. 嵌入式linux 升级,嵌入式Linux的OTA更新,基本原理和实现
  2. SLAM 技术之对于扫描精度的影响及改进
  3. 【Matlab】方差是偏离均值的程度,那偏离中位数的程度怎么算呢?
  4. 架构漫谈(八):从架构的角度看如何写好代码
  5. LeetCode中常用语言的一些基本方法记录
  6. 手脱ACProtect V1.4X(有Stolen Code)之补区段
  7. 真实的程序员是什么样子的!
  8. 本地虚拟机上的docker安装mysql_linux下利用Docker安装mysql的步骤
  9. 让FineUI数据绑定支持dynamic对象
  10. 前端aes专用秘钥加解密_Javascript实现前端AES加密解密功能
  11. 谷歌浏览器翻译设置_谷歌翻译网站最近有点“小脾气”
  12. 用 C 语言编写一个网络蜘蛛来搜索网上出现的电子邮件地址
  13. CSDN积分计算方法
  14. 背包九讲(例题+代码)
  15. iar烧录程序步骤_如何利用IAR单片机编程软件建立烧录程序
  16. 【CS229 Deep Learning笔记】二. 介绍:分类问题
  17. 华为MA5300配置RADIUS认证
  18. Mand Mobile
  19. epub格式电子书剖析之二:OPF文件构成
  20. 删除二叉树节点完整c语言程序以及例子,C语言C++实现二叉树构造与查找删除节点.doc...

热门文章

  1. 如何将数据从旧电脑传输到新电脑,哪种文件传输方式更好
  2. 闪聚支付项目遇到的问题
  3. Stata连享会:Stata参考书清单和电子书
  4. PackageManagerService启动详解(五)之Android包信息体和解析器(中)
  5. 程序员伪造邮件钓鱼,从入门到入土!
  6. Django之CSRF跨站请求伪造(老掉牙的钓鱼网站模拟)
  7. 计算机一指弹360安全中心,360安全中心-360系统急救箱 _360安全中心
  8. ATTCK红队评估(红日靶场二)
  9. 双11女装数据大曝光!淘品牌大势已去
  10. 2017.10.1 国庆清北 D1T2 两个逗比捉迷藏