|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
看了一段时间ortp-0.15.0和音频编程指南后,虽然取得了一些小成果,但是对本项目来说,还是比较失败的,主要原因是在着手之前就没有想好如何将音频这部分,如何被上层协议调用。退一步来说,即使自己编写的程序可以完成音频传输,但从项目本身考虑,大方向也是不对的。于是从今天开始看exosip里面提供的音频接口的函数,因为这些函数是已经写好的,如果看懂了,可以直接利用,其一可以完成音频传输,其二可以与上层协议接口结合。
下面开始论述:exosip搭建好信令平台后,就可以调用音频传输的函数接口了。在josua中,这个接口函数就是os_sound_start(),其中只提供了两种编码方式(pcmu和pcma),像本程序中经常见到的speex编解码,在josua中并没有提供。
对于发送来讲:
os_sound_start()函数先open(AUDIO_DEVICE,"O_RDWR"),然后用ioctl函数设置音频设备/dev/dsp的各个参数;然后用read函数获取音频数据。
如果有SPEEX_SUPPORT,则用speex_enc函数进行编码,但是本程序中没有不支持,而只提供了mulaw_enc、alaw_enc函数用以编码,故我打算下一步是在本项目中用mulaw和alaw用以编码。
然后是调用ortp协议栈里面的函数,将编码后的数据用rtp_session_send_with_ts发送出去。
对于接收来讲:
os_sound_start()函数先open(AUDIO_DEVICE,"O_RDWR"),然后用ioctl函数设置音频设备/dev/dsp的各个参数;然后用rtp_session_recv_with_ts接收传来的编码后的音频数据。
如果有SPEEX_SUPPORT,则用speex_dec函数进行解码,但是本程序中没有不支持,而只提供了mulaw_dec、alaw_dec函数用以解码,故我打算下一步是在本项目中用mulaw和alaw用以解码。
然后用write函数将解码后的音频数据,写入声音设备完成放音操作。
总结一下:
1.用josua里面的音频接口,是实现与上层协议结合的一种方式。如果不参考josua,只用自己编写的程序,与上层协议结合在一起,会感觉到没有方向性。
2.josua里面只实现了两种编解码方式:alaw和mulaw。没有用到其它的编解码方式,比如也没有用到speex的支持。 |
|