使用.NET Core搭建分布式音频效果处理服务(一)需求、问题和解决方案的几个坑

简介: 最近公司需要在服务器上实现两个音频的合成及效果处理。 哇,乍一听功能很简单吧,就是将两个音频叠加,随便一个媒体处理软件几秒钟即可完成,但这仅仅只是针对单用户而言而已。其次,本来这种服务原本就不应该在服务器上面实现,为何? 流媒体处理是相当耗费服务器资源的,包括IO,CPU,bandwidth等等。

最近公司需要在服务器上实现两个音频的合成及效果处理。

哇,乍一听功能很简单吧,就是将两个音频叠加,随便一个媒体处理软件几秒钟即可完成,但这仅仅只是针对单用户而言而已。其次,本来这种服务原本就不应该在服务器上面实现,为何?

  1. 流媒体处理是相当耗费服务器资源的,包括IO,CPU,bandwidth等等。
  2. 服务器资源并不是毫无限制的,比如物理数量就会涉及到整体成本。
  3. 如果是一台机器维护到也简单,但实际运行场景远不止这么简单。
  4. 处理这类流媒体,时间上绝不是用毫秒级的方式来响应,这样就会衍生出更多的问题,比如一些莫名其妙的运行时错误。

如果在C/S模式下,完全可以采用client原生的在客户机上面进行流数据媒体处理,再将处理后的文件上传到指定的云存储位置(比如阿里云的OSS),这样对于服务器来说0压力,只是做个中间数据传递即可。一切就那么简单,不存在大并发问题,不存在扩展性问题,可两个关键问题又来了:

  1. 如果所有交互设备都使用统一的流媒体处理库进行处理(比如ffmpeg),那么,最终得到的效果文件将必定是一样的,可目前关键是目前IOS小组和ANDROID小组参数一样,得到的效果却完全不一样,IOS上有很明显的电流声和杂音(如果有高手指点一下,鄙人非常感谢,嘿嘿)。
  2. 在原生的软件(APP)上调用ffmpeg是可行的,在网页上怎么办?毕竟目前网页也可以实现录音的功能,比如微信API、Recorder.js,用户需要将自己的录制的声音进行一些效果处理的时候,那么网页将是无能为力的。

如上的最终效果不一致、平台功能没有100%覆盖问题,将又是这个产品实际的最大隐患,一致性和通用性并不只是针对技术要求,用户在产品的反馈上同样也需要一致性和通用性。因此,这样就需要服务器来统一处理这类功能需求和问题,如下几点优势(仅针对这个项目而言):

  1. 一致性。不论在哪种设备和操作系统(现在谁没有几台的智能设备啊),通过服务器统一反馈回来的音频文件试听效果均是一样的。
  2. 通用性。只需要统一的一个接口调用,不论PC,APP,H5网页,甚至包括嵌入式设备,只要能通信,那用户就能实现自己想要的音频合成效果。
  3. 不发烧。还有一个就是用户的可移动设备不用在因为处理某个音频而发烧烫手了,喝喝(对于部分低配的ANDROID手机)。

 

纯粹的点对点C/S模式,这里就不画图了,下一节我们开始慢慢的画饼o(∩_∩)o 哈哈。

 

感谢阅读

相关文章
|
8月前
|
开发框架 .NET C#
ASP.NET Core Blazor 路由配置和导航
大家好,我是码农刚子。本文系统介绍Blazor单页应用的路由机制,涵盖基础配置、路由参数、编程式导航及高级功能。通过@page指令定义路由,支持参数约束、可选参数与通配符捕获,结合NavigationManager实现页面跳转与参数传递,并演示用户管理、产品展示等典型场景,全面掌握Blazor路由从入门到实战的完整方案。
655 6
|
负载均衡 NoSQL 算法
Redisson分布式锁数据一致性解决方案
通过以上的设计和实现, Redisson能够有效地解决分布式环境下数据一致性问题。但是, 任何技术都不可能万无一失, 在使用过程中还需要根据实际业务需求进行逻辑屏障的设计和错误处理机制的建立。
603 48
|
中间件 Go
Golang | Gin:net/http与Gin启动web服务的简单比较
总的来说,`net/http`和 `Gin`都是优秀的库,它们各有优缺点。你应该根据你的需求和经验来选择最适合你的工具。希望这个比较可以帮助你做出决策。
690 35
|
消息中间件 人工智能 监控
文生图架构设计原来如此简单之分布式服务
想象一下,当成千上万的用户同时要求AI画图,如何公平高效地处理这些请求?文生图/图生图大模型的架构设计看似复杂,实则遵循简单而有效的原则:合理排队、分工明确、防患未然。
574 14
文生图架构设计原来如此简单之分布式服务
|
存储 缓存
.NET 6中Startup.cs文件注入本地缓存策略与服务生命周期管理实践:AddTransient, AddScoped, AddSingleton。
记住,选择正确的服务生命周期并妥善管理它们是至关重要的,因为它们直接影响你的应用程序的性能和行为。就像一个成功的建筑工地,工具箱如果整理得当,工具选择和使用得当,工地的整体效率将会大大提高。
397 0
|
SQL 分布式计算 DataWorks
MaxCompute MaxFrame评测 | 分布式Python计算服务MaxFrame(完整操作版)
在当今数字化迅猛发展的时代,数据信息的保存与分析对企业决策至关重要。MaxCompute MaxFrame是阿里云自研的分布式计算框架,支持Python编程接口、兼容Pandas接口并自动进行分布式计算。通过MaxCompute的海量计算资源,企业可以进行大规模数据处理、可视化数据分析及科学计算等任务。本文将详细介绍如何开通MaxCompute和DataWorks服务,并使用MaxFrame进行数据操作。包括创建项目、绑定数据源、编写PyODPS 3节点代码以及执行SQL查询等内容。最后,针对使用过程中遇到的问题提出反馈建议,帮助用户更好地理解和使用MaxFrame。
|
SQL 分布式计算 数据处理
云产品评测|分布式Python计算服务MaxFrame | 在本地环境中使用MaxFrame + 基于MaxFrame实现大语言模型数据处理
本文基于官方文档,介绍了由浅入深的两个部分实操测试,包括在本地环境中使用MaxFrame & 基于MaxFrame实现大语言模型数据处理,对步骤有详细说明。体验下来对MaxCompute的感受是很不错的,值得尝试并使用!
410 1
|
分布式计算 数据处理 MaxCompute
云产品评测|分布式Python计算服务MaxFrame
云产品评测|分布式Python计算服务MaxFrame
392 2
|
人工智能 分布式计算 数据处理
有奖评测,基于分布式 Python 计算服务 MaxFrame 进行数据处理
阿里云MaxCompute MaxFrame推出分布式Python计算服务MaxFrame评测活动,助力开发者高效完成大规模数据处理、可视化探索及ML/AI开发。活动时间为2024年12月17日至2025年1月31日,参与者需体验MaxFrame并发布评测文章,有机会赢取精美礼品。
|
10月前
|
存储 负载均衡 NoSQL
【赵渝强老师】Redis Cluster分布式集群
Redis Cluster是Redis的分布式存储解决方案,通过哈希槽(slot)实现数据分片,支持水平扩展,具备高可用性和负载均衡能力,适用于大规模数据场景。
731 2

热门文章

最新文章