免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 6266 | 回复: 28
打印 上一主题 下一主题

[C++] 求局域网级对方播放音乐文件思路[Windows平台] [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-10-26 16:53 |只看该作者 |倒序浏览
本帖最后由 chinesedragon 于 2012-10-29 08:54 编辑

我已经做成功了一个能够用麦克风给对方讲话的小程序.
这个小程序的制作方法是在讲话的一端利用Windows的waveInXXX这些函数获取麦克风的声音并利用UDP传输给对方,在对方一端利用waveOutXXX这些函数将麦克风声音播放出来.这一类软件网络上有很多例子.

我现在是需要的是做一个给对方播放音乐文件的例子,比如说给对方播放WAV文件.我的需求是在我这一端打开一个音乐文件,点击播放按钮后对方能够听到声音.这可能会要求实时地利用网络将声音数据传输给对方.
类似的软件应该是QQ的给对方播放影音文件的一个功能.
现在我是没有这样的思路,也就是说不知道应该使用哪些函数来实现这样的功能.网络上相关的信息好像也很少.


有人告诉我:
一样的,获取播放声音的数据,然后网络通信,另一端解析出来播放
关键就是你的编码和解码


我在做获取话筒的声音时,只需要使用waveInOpen打开声音设备后,并为其添加数据缓冲区,录音开始后,只需要处理缓冲区满的消息即可,也就是在这个消息中把数据传输走.

现在要打开声音文件,获取到声音数据后,应该在什么时候把数据传输出去,而且以什么样的速率传输呢?
这些问题不是太明白.

因为需要在PC机上向单片机传输这些语音流,所以希望越简单越好,越基础越好。

现在的问题是发送端每次发送多大的Buffer以及多长时间发送一次,这个我还没有办法确定。

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
2 [报告]
发表于 2012-10-26 17:06 |只看该作者
这个应该用音频传输协议吧

论坛徽章:
0
3 [报告]
发表于 2012-10-26 17:14 |只看该作者
谢谢你的提醒,但用我那种方法能实现吗?
hellioncu 发表于 2012-10-26 17:06
这个应该用音频传输协议吧

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
4 [报告]
发表于 2012-10-26 17:28 |只看该作者
百度了一下, 你看一下这个接口:SetDIBitsToDevice, 视频可以按帧传输, 按帧显示.

http://baike.baidu.com/view/1080394.htm

论坛徽章:
0
5 [报告]
发表于 2012-10-26 17:32 |只看该作者
怎么都用baidu。。。不用google的吗?

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
6 [报告]
发表于 2012-10-27 10:24 |只看该作者
baidu还行吧,还是能搜出些有用的东西的。

在国内,只认google,从来不用baidu是一种什么心态呢?

论坛徽章:
0
7 [报告]
发表于 2012-10-27 15:47 |只看该作者
这个就是流媒体播放了,可以看看Apple的开源流媒体服务器 DarwinStreamingServer(跨平台的),里面有个Mp3广播模块实现源码可以参考。

论坛徽章:
3
摩羯座
日期:2013-11-12 20:06:19午马
日期:2013-11-27 16:35:55双鱼座
日期:2014-04-04 19:02:30
8 [报告]
发表于 2012-10-27 16:55 |只看该作者
流媒体传输协议?还是实时的?那必须是rtsp啊

对媒体文件的传输,需要本段拆包传,对端再接包然后解码实时的播出来。LZ,是要这个效果吗?如果是的话,lz有没有听说过ffmpeg开源的多媒体编解码库。
可以利用ffmepg来做多媒体文件的解码和解析工作,至于传输就要找个rtsp传输方面的开源库了。

我以前一直想做的项目和lz这个出奇的像,我们的项目名叫视频共享(VideoSharing)。后来,后来就黄了.....

ffmpeg官网,lz参考下?

论坛徽章:
0
9 [报告]
发表于 2012-10-28 13:39 |只看该作者
因为对这方面以前没有接触过,所以希望是越简单越好。最好利用基本的通讯协议
mci2004 发表于 2012-10-27 16:55
流媒体传输协议?还是实时的?那必须是rtsp啊

对媒体文件的传输,需要本段拆包传,对端再接包然后解码实 ...

论坛徽章:
1
射手座
日期:2014-08-04 16:49:43
10 [报告]
发表于 2012-10-28 14:37 |只看该作者
不用走RTSP,  scoket 直接read 影视文件 定长buffer, 传入客户端, 客户端接收传递给 硬解码或者软解接口就行,市面上的常用的file-mode, line-buffer方式的例子很多,可以找找看.....

因为局域网暂不考虑网络延迟问题, 简单点看问题,你单机能播放 网络就能播放.....
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP