售前電話
135-3656-7657
售前電話 : 135-3656-7657
話機(jī)在通話過程中,可以啟用錄音服務(wù)保存通話錄音。配置有兩種方式保存錄音:
1) 將 rtp 數(shù)據(jù)存儲(chǔ)成指定格式文件保存在本地。
2) 將錄音的 rtp 數(shù)據(jù)傳送給服務(wù)器,在服務(wù)器上保存成文件格式。
1.2 適用型號(hào)
本文檔適用于 Fanvil X3S、X4 、X5S、X6、X7、X7C、X210、X210i、XU 系列等型號(hào)
1.3 目標(biāo)受眾
此文檔是針對(duì)那些想了解錄音功能是如何改進(jìn)的公司內(nèi)部研發(fā)或者測(cè)試人員。
2 錄音框架介紹
2.1 通話錄音方案架構(gòu)
創(chuàng)建本地 stream,和要錄音的 stream 進(jìn)行混音處理,本地的 stream 只接收。通過本地stream,可以本地綁定端口,接收 stream 上經(jīng)過混音處理的 rtp 數(shù)據(jù),再講 rtp 數(shù)據(jù)寫入本地文件保存或發(fā)送給服務(wù)器保存。
3 通話錄音功能模塊介紹
3.1 本地錄音
本地錄音只有掛載 U 盤才可以支持錄音,獲取到 U 盤掛載點(diǎn)后對(duì) U 盤可用容量進(jìn)行檢查,創(chuàng)建文件保存 rtp 數(shù)據(jù),文件名以“Record_當(dāng)前系統(tǒng)時(shí)間”命名。如果開啟本地錄音文件大小限制,錄音文件達(dá)到限制值且 U 盤有可用容量會(huì)創(chuàng)建新的錄音文件繼續(xù)保存 rtp數(shù)據(jù)。錄音過程中可暫停、恢復(fù)通話錄音。
本地錄音文件格式為:
在本地錄音過程中,會(huì)生成以上文件格式信息,保存在錄音文件中,用于播放時(shí)使用。codec 為錄音編碼;rtpLen 為 rtp 數(shù)據(jù)長(zhǎng)度;incremet 為時(shí)間戳增量;dataSize 為 rtp 數(shù)據(jù)總長(zhǎng)度。錄音文件格式為.wav。
3.2 服務(wù)器錄音
服務(wù)器錄音需要配置錄音服務(wù)器地址serverAddr和端口serverPort。話機(jī)和服務(wù)器通信,分為控制指令和 rtp 數(shù)據(jù)。
3.2.1 控制指令
開始錄音時(shí),話機(jī)需要先和服務(wù)器通信交互信息,雙方確認(rèn)后,再開始傳輸 rtp 數(shù)據(jù)。話機(jī)和服務(wù)器 Addr + Port 進(jìn)行控制指令通信,基于 TCP 方式。
首先話機(jī)發(fā)起錄音開始請(qǐng)求,服務(wù)器收到后會(huì)重新分配一個(gè)地址和端口,專門監(jiān)聽話機(jī)的 rtp 數(shù)據(jù),收到后保存為文件。話機(jī)端收到響應(yīng)后,需要根據(jù)服務(wù)器響應(yīng)的消息,連接指定的地址和端口,上傳 rtp 數(shù)據(jù),基于 UDP 方式。
Record Start 指令格式
指令請(qǐng)求:
cmd=RecordStartRequest&id=xxx&device=xxx&remote_number=xxx&remote_name=xxx&local_number=xxx&local_name=xxx&dir=in|out&codec=xxx
指令響應(yīng):
cmd=RecordStartResponse&id=xxx&result=success|failed&reason=xxx&server=xxx&port =xxx
id 表示此次錄音的唯一標(biāo)識(shí),由話機(jī)端生成一個(gè)隨機(jī)數(shù),整個(gè)錄音過程中,保持該值不變
device 表示設(shè)備的 mac 地址,用于服務(wù)器端分類管理設(shè)備dir 表示通話類型,呼入還是呼出
codec 表示 rtp 的編碼,PCMA|PCMU
server port 表示監(jiān)聽 rtp 數(shù)據(jù)的服務(wù)器和端口,由錄音服務(wù)器動(dòng)態(tài)生成
注意:如果服務(wù)器回復(fù) failed,表示服務(wù)器有問題,無法保存錄音,話機(jī)需要提示錄音失敗停止指令,既可以由話機(jī)端發(fā)送,也可以由服務(wù)器端發(fā)送。當(dāng)服務(wù)器端錄音異常時(shí),可以發(fā)送 Stop 指令通知錄音結(jié)束。
Recrod Stop 指令格式
指令請(qǐng)求:
cmd=RecordStopRequest&id=xxx&remote_number=xxx&remote_name=xxx&local_number=xxx&local_name=xxx&reason=xxx
指令響應(yīng):
cmd=RecordStopResponse&id=xxx&result=success
如果錄音期間,socket 連接出錯(cuò),雙方都需要設(shè)置為錄音已停止?fàn)顟B(tài),清楚之前的狀態(tài)。
RecordStopRequest 指令中,除了 cmd 和 id 是必選參數(shù),其它都是可選。如果有,且和RecrodStartRequest 指令中的值不一樣時(shí),使用新值覆蓋。
3.2.2 RTP 數(shù)據(jù)
話機(jī)從服務(wù)器響應(yīng)消息中提取出地址和端口,使用 UDP 方式上傳 rtp 數(shù)據(jù)。直到收到停止指令,或者 socket 異常了,停止 rtp 發(fā)送,設(shè)置為錄音停止?fàn)顟B(tài)。
3.3 服務(wù)停止/播放