freeswitch录音

freeswitch 录音录像 

freeswitch支持录音和录像功能,录音功能主要是通过mod_sndfile、mod_shout等模块实现的,录像模块是通过mod_mp4v2和mod_av模块实现。

        mod_sndfile录制wav

        mod_shout录制mp3

        mod_mp4v2录制MP4文件

        mod_av是在1.6.x版本中提供的新模块

       把mod_av放到了1.5.x的版本中,利用该模块实现了播放视频文件、连接摄像头等功能。录像功能利用mod_mp4v2模块实现,并发可以达到几十路vga同时录像,高并发下音视频比较同步,耗费cpu也不高,瓶颈主要体现在带宽上。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Freeswitch 录音内核

扫描二维码关注公众号,回复: 5580565 查看本文章

 一、注册回调函数

应用程序调用switch_ivr_record_session->

switch_core_media_bug_add向fs内核注册mediabug接口回调函数record_callback监听流媒体(读写模式)

二、内核调用switch_core_session_read_frame获取来话语音

1、调用endpoint的read_frame函数获取endpoint的语音。

2、调用media bug的回调函数record_callback通知应用程序获取语音数据。

3、应用程序如果设置通道变量RECORD_USE_THREAD为true,内核开启线程录音,内核会把录音数据缓冲到thread_buffer,再通过线程来读取缓冲写文件。否则直接写文件。(如果录音丢数据,可采用线程方式录音)

4、内核写文件

内核为每个录音缓冲池pre_buffer,将需要写入文件的数据写入到此缓冲内,当缓冲数据大小大于 SWITCH_DEFAULT_FILE_BUFFER_LEN = 65536时,内核从缓冲池中获取数据写文件。应用程序可以通过设置通道变量enable_file_write_buffering来设置 SWITCH_DEFAULT_FILE_BUFFER_LEN的大小。

三、内核调用switch_core_session_write_frame写入语音

1、调用endpoint的write_frame函数给endpoint发送语音

2、调用media bug的回调函数record_callback通知应用程序获取语音数据

3、同步骤二(3)。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

freeswitch 接通后再录音:

需求:录音时不要将前置媒体录制进去.

用法:

<action application="set" data="media_bug_answer_req=true"/>

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

freeSwitch录音

http://blog.csdn.net/whyhonest/article/details/7660421

http://blog.163.com/lorraine_gu/blog/static/24348001020167385347309?ignoreua

猜你喜欢

转载自blog.csdn.net/irizhao/article/details/88647370