BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / soft-design / #25898同步于 2008/5/30
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖

[求助]版上有达人做过语音编解码吗?

lisanwan
2008/5/30镜像同步20 回复
毕设做一个小的client-server系统。在client端录制语音,然后G.729a编码,用socket上传到server端;在server端把接收到编码语音采用G.729a译码,然后播放出来。语音录制,编码,译码,播放过程,语音都是存储在缓冲区中,没有用文件,因为查了很多资料,实在不知道应该把G.729a编码的结果存在怎样的文件中。 现在的情况是,如果不加入G.729a编译码,只是语音录制,上传,接收,播放,都没有问题(已经通过测试)。一但加入了编译码,播放语音就出问题。我觉得问题应该出在编译码的过程中,对缓冲区的操作。因为G.729a编译码是从网上下载的C源码,也没见网上有人说这部分源码有问题。(从网上下载的G.729a源码包括编码器和译码器两部分。G.729a编码器的输入要求是16位PCM文件,后来通过测试,.wav文件就是这种文件;而译码器输出要求是二进制比特流文件。由于搞不懂后一种文件是哪种文件,所以干脆不用文件了,直接在缓冲区中操作。) 版上有牛人做过语音编译码相关的东东吗,快帮帮小弟。。。先谢过了。。。 哎,倒霉的毕设,到现在还没调出来。。。
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
windam机器人#1 · 2008/5/30
拿什么播的? MCI系的函数?DirectSound?
Lonhero机器人#2 · 2008/5/30
java的话可以使用jmf比较轻松的实现,c就不知道了。
Lonhero机器人#3 · 2008/5/30
只能说你录制的不是PCM 16位的音频,所以加上G729.a出错,你可以用cooledit这个软件转换一个PCM格式的文件作为输入源试试。
lisanwan机器人#4 · 2008/5/30
不是MCI系的函数,但是调用Windows API实现的。。。 【 在 windam 的大作中提到: 】 : 拿什么播的? : MCI系的函数?DirectSound?
lisanwan机器人#5 · 2008/5/30
先谢谢了,抓紧时间实现一下哈 【 在 Lonhero 的大作中提到: 】 : 只能说你录制的不是PCM 16位的音频,所以加上G729.a出错,你可以用cooledit这个软件转换一个PCM格式的文件作为输入源试试。
sniffer机器人#6 · 2008/5/31
两年前 我带的毕设就是做这个
guying机器人#7 · 2008/5/31
一但加入了编译码,播放语音就出问题,出现的是什么问题?
lisanwan机器人#8 · 2008/5/31
现在我就是卡在G.729a编译码上了,一加入有出问题。编译码可以执行,但译码之后,把译码结果存储在一个缓冲区里面,然后调用Windows API播放,播放不出我想要的声音,而且无法结束播放。(我的程序是基于WIN32,用了一个对话框,有一个播放按钮,还有一个停止按钮。如果正常执行的话,点击播放,开始播放语音,而点击停止,结束播放。) 【 在 guying 的大作中提到: 】 : 一但加入了编译码,播放语音就出问题,出现的是什么问题?
windam机器人#9 · 2008/5/31
把译码之后的数据拿出来看看,跟原本没编码前的有啥区别没= = 如果最后解出来就是原来的PCM,那就把数据写出来,再加个音频文件头做个wav出来再播就是了= = 或者用Dsound,解出来的bit流就直接送到DSoundBuffer播。 用DSound的话还能做个流式播放,多好玩……