首页 新闻 会员 周边 捐助

通过WCF播放MP3文件

0
[待解决问题]

我目前的需求是从客户端调用WCF播放MP3然后把声音输出到其他设备,声音的输出就是通过声卡连接音频线实现的,这个地方没有办法修改。

现在的问题在于在WCF中调用播放MP3后程序执行是没问题的,但是声音是播放不出来的,这个貌似是由于windows服务的限制,请问各位有没有其他好的方式?

 

非常感谢

厄尔尼诺的主页 厄尔尼诺 | 初学一级 | 园豆:58
提问于:2014-09-29 22:52
< >
分享
所有回答(4)
0

能不能贴出关键代码给大家看看,这样才能解决问题。

唯我独萌 | 园豆:537 (小虾三级) | 2014-09-30 08:49
0

WCF是一种数据通讯机制,怎么跟播放MP3牵扯在一起了?

519740105 | 园豆:5810 (大侠五级) | 2014-09-30 08:50

现在的需求就是通过客户端调用WCF服务,播放MP3文件,然后服务器通过音频线连接到一个广播设备上边,把声音广播出去

支持(0) 反对(0) 厄尔尼诺 | 园豆:58 (初学一级) | 2014-09-30 15:10

@厄尔尼诺: 那就不是WCF的问题。你的求助好没头脑。

这个问题,你应该先在本地建立项目,撇开WCF,实现MP3的播放功能。

WCF不过是提供数据而已,你打开文件需要用到流,WCF也可以给你提供流,当作STREAM看,就没异样了。

支持(0) 反对(0) 519740105 | 园豆:5810 (大侠五级) | 2014-09-30 15:21

@519740105: MP3播放是没有问题的,但是功能的调用是由客户端发起的,也就是说流程是这样的:客户端请求播放MP3-》WCF接受请求进行播放-》声音输出到声卡-》广播设备进行广播。现在的关键节点是WCF播放的MP3不出声音,愿意就是现在windows不允许service播放声音,所以想请教一下有没有其他思路。

我自己是相出其他一个方式的是这样的流程客户端请求播放MP3-》服务端播放以Stream的形式返回给客户端-》客户端在本机声卡播放出来-》本机声卡生意传递到服务器(通过TCP监听的形式)-》服务器播放声音道服务器声卡-》声音通过音频线传到广播设备。这样的流程应该是可行,但是就是感觉太绕了。

我还实验过通过delegate的方式把播放MP3的工作放到host的windowsform中,很可惜还是不可以的。

 

现在就想请教一下各位有没有好的思路,因为没有做过服务端的开发,所以有些东西可能我自己就钻牛角尖了,谢谢了!

支持(0) 反对(0) 厄尔尼诺 | 园豆:58 (初学一级) | 2014-09-30 16:04

@厄尔尼诺: 你是想在服务器播放?

支持(0) 反对(0) 519740105 | 园豆:5810 (大侠五级) | 2014-09-30 16:11

@519740105: 是的,必须得从服务器播放才行,不然的话播放这块应该就不用通过WCF了

支持(0) 反对(0) 厄尔尼诺 | 园豆:58 (初学一级) | 2014-09-30 16:41

@厄尔尼诺: 这个这个~~~

1、你要解决服务器开放播放声音的问题(权限)

2、你要解决通过服务播放声音的问题(应该不难的)

3、通过WCF把要播放的声音加入到一个队列(比如数据库、cache等)

4、通过另外一个服务监控这个队列,执行声音播放。

支持(0) 反对(0) 519740105 | 园豆:5810 (大侠五级) | 2014-09-30 17:02

@519740105: 谢谢您的提示,我去试一下我试试放到一个全局的List中是否可行

支持(0) 反对(0) 厄尔尼诺 | 园豆:58 (初学一级) | 2014-09-30 17:14
0

如果你是要用WCF控制服务器播放MP3的话,这应该是不太提倡的。

因为服务不再可以和桌面用户交互。(微软原话: 在Vista或者之后的版本里面的确不行)

爱编程的大叔 | 园豆:30844 (高人七级) | 2014-09-30 10:58
0

我觉得你的想法有问题,你应该让A客户端发送请求,服务器把声音传送到B客户端播放;B客户端和服务器在同一台机器,这样看起来就好像服务器有了UI一样,也便于维护;

CarsonCui | 园豆:162 (初学一级) | 2014-12-04 14:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册