使用.NET Core搭建分布式音频效果处理服务(一)需求、问题和解决方案的几个坑
最近公司需要在服务器上实现两个音频的合成及效果处理。
哇,乍一听功能很简单吧,就是将两个音频叠加,随便一个媒体处理软件几秒钟即可完成,但这仅仅只是针对单用户而言而已。其次,本来这种服务原本就不应该在服务器上面实现,为何?
- 流媒体处理是相当耗费服务器资源的,包括IO,CPU,bandwidth等等。
- 服务器资源并不是毫无限制的,比如物理数量就会涉及到整体成本。
- 如果是一台机器维护到也简单,但实际运行场景远不止这么简单。
- 处理这类流媒体,时间上绝不是用毫秒级的方式来响应,这样就会衍生出更多的问题,比如一些莫名其妙的运行时错误。
如果在C/S模式下,完全可以采用client原生的在客户机上面进行流数据媒体处理,再将处理后的文件上传到指定的云存储位置(比如阿里云的OSS),这样对于服务器来说0压力,只是做个中间数据传递即可。一切就那么简单,不存在大并发问题,不存在扩展性问题,可两个关键问题又来了:
- 如果所有交互设备都使用统一的流媒体处理库进行处理(比如ffmpeg),那么,最终得到的效果文件将必定是一样的,可目前关键是目前IOS小组和ANDROID小组参数一样,得到的效果却完全不一样,IOS上有很明显的电流声和杂音(如果有高手指点一下,鄙人非常感谢,嘿嘿)。
- 在原生的软件(APP)上调用ffmpeg是可行的,在网页上怎么办?毕竟目前网页也可以实现录音的功能,比如微信API、Recorder.js,用户需要将自己的录制的声音进行一些效果处理的时候,那么网页将是无能为力的。
如上的最终效果不一致、平台功能没有100%覆盖问题,将又是这个产品实际的最大隐患,一致性和通用性并不只是针对技术要求,用户在产品的反馈上同样也需要一致性和通用性。因此,这样就需要服务器来统一处理这类功能需求和问题,如下几点优势(仅针对这个项目而言):
- 一致性。不论在哪种设备和操作系统(现在谁没有几台的智能设备啊),通过服务器统一反馈回来的音频文件试听效果均是一样的。
- 通用性。只需要统一的一个接口调用,不论PC,APP,H5网页,甚至包括嵌入式设备,只要能通信,那用户就能实现自己想要的音频合成效果。
- 不发烧。还有一个就是用户的可移动设备不用在因为处理某个音频而发烧烫手了,喝喝(对于部分低配的ANDROID手机)。
纯粹的点对点C/S模式,这里就不画图了,下一节我们开始慢慢的画饼o(∩_∩)o 哈哈。
感谢阅读

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
在阿里云购买的域名,需要备案服务号怎获得,没有购买服务器
在阿里云购买的域名,需要备案服务号怎获得,没有购买服务器,只需要域名备案 域名无法单独备案,需要虚拟主机或者ecs服务器,虚拟主机备案直接选择虚拟主机,ecs 需要去 备案服务号里面找到ecs申请(每台ecs可以申请5个备案服务号) 没有购买阿里云虚拟主机和服务器是你没办法在阿里云备案,只是购买域名就没办法在阿里云备案,请购买相关产品后才能进行备案。 首先你要有域名,比如我的域名。你先去阿里云的官方网站找到备案的地方,然后点击阿里云备案。然后将你的各种个人信息传入表格。注意:网站的名字不能有自己的名字。比如当时我写的名字是x的个人网站。结果就给我pass掉了。然后你就会被要求签一个pdf表格,你需要一台打印机,打印出来然后签字拍照。 接下来阿里云工作人员会给你打电话,告诉你。你初审通过了,然后就会要求你进行下一步审核。会给你发一张拍照用的壁纸,这张壁纸会通过物流免费发给你,然后你用它拍一张照片上传。接下来阿里云就审核通过了 如果不出错的话,阿里云将你的各种信息上传到工信部下的审核中心审核,大概也要20天左右,然后就OK了。
- 下一篇
要选海外服务器?如果是海外服务器国内访问是不是有延迟?
要选海外服务器?如果是海外服务器国内访问是不是有延迟? 我想做一个在国内访问的网站,想部署在阿里云上,但是想在阿里云中调用谷歌提供的一些API,不知道阿里云的网络通不通?要选海外服务器?如果是海外服务器国内访问是不是有延迟? 国内不能访问的API 国内地域的ECS,和我们家用的网络结果差不多,即家里不能访问到的国外资源,一般在阿里云的境内地域上的ECS也访问不了的喔。
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS6,CentOS7官方镜像安装Oracle11G
- Docker安装Oracle12C,快速搭建Oracle学习环境
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8编译安装MySQL8.0.19
- CentOS关闭SELinux安全模块
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果