sipphone中播放声音文件

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 11:58 点击:
   在这一篇里记录下在Java sip softphone的基础上添加播放音乐文件的功能。前面介绍了几款sipphone,发现Java sip softphone这款开源软件功能简单易于修改,根据自己的需要选择是否保留其GUI,然后修改少部分代码即可实现在拨号后播放指定的音乐文件。但是仍然有几个问题有待以后解决:1是对整个源码的框架流程的分析,目前我也只是删除了其GUI部分,而底层的sip rtp传输没有涉及;2是我下载的版本在挂断、远端忙等情况时有问题;3是播放声音文件目前只是使用默认支持的wav格式,其它格式可以扩展,但是我实现的方式应该还是有问题,因为获取发送声音数据的间隔还没有确定,只是自己测试的20ms,后面会看到。
    要播放声音文件,首先得找到是从哪里获得数据的。在源码书中看到net.sourceforge.peers.media包,类Capture中看到buffer = soundManager.readData();,进而查看类SoundManager,可以发现:openAndStartLines()、 readData() 、writeData()等函数,正是我们需要的麦克风音频数据的捕获和写入扬声器的方法。查看readData()方法如下:
[java] 
1. /**
2.      * audio read from microphone, read all available data
3.      * @return
4.      */ 
5.     public synchronized byte[] readData() { 
6.         if (targetDataLine == null) { 
7.             return null; 
8.         } 
9.         int ready = targetDataLine.available(); 
10.         while (ready == 0) { 
11.             try { 
12.                 Thread.sleep(2); 
13.                 ready = targetDataLine.available(); 
14.             } catch (InterruptedException e) { 
15.                 return null; 
16.             } 
17.         } 
18.         if (ready <= 0) { 
19.             return null; 
20.         } 
21.         byte[] buffer = new byte[ready]; 
22.         targetDataLine.read(buffer, 0, buffer.length); 
23.         if (mediaDebug) { 
24.             try { 
25.                 microphoneOutput.write(buffer, 0, buffer.length); 
26.             } catch (IOException e) { 
27.                 logger.error("cannot write to file", e); 
28.                 return null; 
29.             } 
30.         } 
31.         return buffer; 
32.     } 
     去掉调试信息,结合类Capture中的代码,发现这里仅是通过buffer将数据获取,然后通过PipedOutputStream类型的rawData将数据发送出去;因此只要在readData()中使bu

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • Windows Phone 项目实战之我的微盘(下)
      • Windows Phone 实用开发技巧(26):对DataTemplate中的元素播放
      • Windows Phone 实用开发技巧(25):Windows Phone读取本地数据
      • Windows Phone 实用开发技巧(27):创建透明Tile
      • Windows Phone 知识锦(12月版)
      • Windows Phone实用开发技巧(31):密码加密
      • Windows Phone 项目实战之我的微盘(上)
      • WP7实例篇之土豆搜索器(2)
      • [翻译]WP7 QuickStart-第七篇-布局
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1