一个嵌入式音频项目总结

电子说

1.2w人已加入

描述

客户的需求是这样的,做一个声卡混音程序,实现将音箱要播放的声音和话筒输入的声音合成为输入,主要是用于嵌入式音频播放产品,所以大家以后见了音效特别好的产品不要相信销售人员的忽悠。。。“我们的产品音效好是用了XXX高科技材料,觉得处于国际领先水平...”,他们口中所谓的“高科技”,其实都是在软件上做了文章而已。

其实要实现这样的一个功能其实并不难,但我当时其实也是第一次做这样的程序(国内这个东西确实很好有人做过),心里也没底,但是凭借我扎实的基础,再加上我在图书馆泡了一天之后,我很快就有了思路...主要有两种方法可以实现:

1. 可以使用DirectXsound接口做.将输出缓冲区音频叠加到输入缓冲区;

2.可以调用ASIO音频驱动,网上有很多教程.

这两个方案都是只能基于wince系统的,linux下我暂时没有找到一个很好的方案,但是最终我还是选择了第一个,因为毕竟图书馆关于direct的开发资料比较多,开发难度相对来说容易控制,但由于我不能公布全部代码,只能在这里梳理一下重要的几个知识点和程序中需要用到的API。

其实我不怕大家嘲笑,在做这个项目之前我一直以为directx就只做3D处理的,但是在图书馆查了多媒体处理技术的相关书籍之后,才知道自己有多么无知。DirectX是由很多API组成的,按照性质分类,可以分为四大部分,显示部分、声音部分、输入部分和网络部分。显示部分担任图形处理的关键,分为Direct Draw(DDraw)和Direct 3D(D3D),前者主要负责2D图像加速。它包括很多方面:我们播放mpg、DVD电影、看图、玩小游戏等等都是用的DDraw,你可以把它理解成所有 划线的部分都是用的DDraw。后者则主要负责3D效果的显示,比如CS中的场景和人物、FIFA中的人物等等,都是使用了DirectX的Direct 3D。声音部分中最主要的API是DirectSound,除了播放声音和处理混音之外,还加强了3d音效,并提供了录音功能,我所接的这个项目就是利用了DirectSound来解决的。。

API调用方面的话主要掌握3个方面,1.对音频缓冲区的操作,2.对创建辅助缓冲区,3利用directx实现混音程序,这三方面的书籍,dirextx的技术书籍我相信应该都有,只要学会调用这三方面的API,做相关的音频项目自然会便觉得很方便,不是什么高科技,在这里我不想贴代码来忽悠大家,这东西又不是我自创的,花个几十元钱去亚马逊买本书大家都能学会,熟练以后,去游戏公司应聘的话,月薪7K应该不成问题。

我比较注重一些项目经验和设计思路,这样才能够助新手快速培养独立完成项目的思路,因为我不是职业程序员,从事的工作也是电气领域的工作,不会和大家抢工作,我接私活第一是为了接触各个领域方面的技术,拓展自己的专业视野,我大致了解一下开发流程即可,因为没有必要过于深入,因为国内所有领域说句老实话,核心技术都是国外的,除了一些逆向分析的黑客高手和一些科研工作者,一般人都很难了解,也没有这个时间,对于我这样一个业余的技术个体户来讲,我只要按时完成客户给我的项目,能保证产品就可以了,暂时不会研究的那么深入,不过等过个几年,等我的团队日益成熟了,也许会做自己的独立产品。

自己独立接项目的另一个好处就是可以积累一定的社会人脉,让社会来认可我的专业水平,我一直觉得做技术(不光是计算机,电气、机械等其他专业领域一样)和球星踢球很像,个人水平一旦被社会得到认可,身价自然水涨船高了,和比自己水平高一点的人一起做项目,技术能力自然很容易提高。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分