关于语音聊天系统的几个问题 能回答了答案,愿散尽100分

dickbarry 2010-05-31 11:21:45
程序是采用WaveX低级音频函数进行编写的。我对音频编程不熟悉,希望高手给予指点

先说我的想法。我的想法很简单,就是采集语音,放入缓冲区,压缩,发送。接受端是接收数据包,解压,播放。但这样有个弊端,举个例子,A和B聊天,那么A的耳机里是没有A的声音的。

问题如下:

1.在音频采集的时候,可以直接用MP3或者WMA格式进行采集么?如果可以,怎么设置?最好用ACM相关编程。如果不可以,需要对WAVE文件进行压缩,压缩时采用哪种格式进行压缩时压缩比大,具体压缩比是多少?

2.由于是在网络中传输语音,压缩和解压要考虑实时性。查一些资料,GSM 6.10挺好的。这种到底是什么东西?有些是进行G721编码,这种又是什么东西?编码效果如何?

3.对于聊天内容,最后还需要记录下来,以供以后使用。我想采用wma格式进行存储,acm编程可以实现吗?另外,如果两个对话者同时说话,怎么存储聊天内容?


希望大家可以交流下
...全文
90 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
starytx 2010-05-31
  • 打赏
  • 举报
回复
如果是局域网应用,可以不用压缩的,直接传,压缩的话反而不好,记录聊天内容的话可以将采集的声音缓冲(自己的声音)和收到的缓冲(对方的声音)“加”起来实现混音,然后将混合后的缓冲数据写入文件就行了
thisisyjs 2010-05-31
  • 打赏
  • 举报
回复
1.使用混音的函数切换输入源为立体声混音,这样你采集的声音将是系统播放的mp3。
2.网络传输由于考虑带宽问题,一般语音采样8000Hz,8或者16位,单声道。压缩多用g.711, 723.1, 729A。当然也有很多其他的codec可用。
3.不清楚。可以保存为MP3。如果用directshow,那么系统有什么编码器就可以保存为什么格式,前提是你要熟悉directshow
shen_wei 2010-05-31
  • 打赏
  • 举报
回复
不是很清楚。。。。关注下
thisisyjs 2010-05-31
  • 打赏
  • 举报
回复
mixer 打头的系列函数,如:mixerSetControlDetails
不用dx也可以,网上有 g.711的源码, 8k 16bit 单声道,压缩之后是 64kbps,局域网传没有任何问题。
混音是不好弄的,简单加起来应该是不行的。
codec调用系统ACM应该也可以,不过如果mp3,你可以去找压缩的源码或者动态库,都有的,lame 就是最常见的一个库,还有个什么应该都能找到。建议去codeproject看看。
dickbarry 2010-05-31
  • 打赏
  • 举报
回复
回2楼
1 如何实现?给出关键函数就行
2、3 不想用DX编程,现在学来不及了。用WaveX函数或者ACM相关函数可以实现么?如果可以,能给几个关键函数么?

回3楼
据我了解,实现混音必须用DX吧?


回两位,如果真的没有解决办法,要不我还是学习下DX吧。只是怕时间来不及。我已经下载了DX90 SDK,但手头缺少资料,直接看DX9.0 的.chm 太慢了

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧