国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

FreeSWITCH使用L16編碼通信及raw數(shù)據(jù)提取

這篇具有很好參考價值的文章主要介紹了FreeSWITCH使用L16編碼通信及raw數(shù)據(jù)提取。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

環(huán)境:CentOS 7.6_x64

FreeSWITCH版本 :1.10.9

Python版本:3.9.12

一、背景描述

PCM(Pulse Code Modulation,脈沖編碼調(diào)制)音頻數(shù)據(jù)是未經(jīng)壓縮的音頻采樣數(shù)據(jù),它是由模擬信號經(jīng)過采樣、量化、編碼轉(zhuǎn)換成的標準數(shù)字音頻數(shù)據(jù)。

在FreeSWITCH中體現(xiàn)為L16編碼(switch_pcm.c文件),和網(wǎng)絡(luò)平臺進行音頻對接時會使用到該編碼,這里記錄下如何使用FreeSWICH進行L16編碼通信,以及如何從pcap文件中獲取raw數(shù)據(jù)。

FreeSWITCH使用L16編碼通信及raw數(shù)據(jù)提取

這里使用的FreeSWITCH版本是1.10.9,操作系統(tǒng)是CentOS 7.6_x64,F(xiàn)reeSWITCH的編譯及安裝可參考我之前寫的文章:CentOS7環(huán)境源碼安裝freeswitch1.10

二、具體實現(xiàn)

1、配置FS及軟電話支持L16編碼

1)配置FS支持L16編碼

文件:freeswitch/conf/vars.xml添加L16編碼:

<X-PRE-PROCESS cmd="set" data="global_codec_prefs=OPUS,G722,PCMU,PCMA,H264,VP8,iLBC,L16"/>
<X-PRE-PROCESS cmd="set" data="outbound_codec_prefs=OPUS,G722,PCMU,PCMA,H264,VP8,iLBC,L16"/>

2)配置軟電話支持L16編碼

這里使用 MicroSIP 軟電話,啟用編碼:LPCM 8kHz

具體配置如下:

FreeSWITCH使用L16編碼通信及raw數(shù)據(jù)提取

?2、L16編碼通話及抓包

1)配置測試撥號方案

撥打 6001 播放moh音頻,具體如下:

<extension name="moh_test">
    <condition field="destination_number" expression="^6001$">
          <action application="answer"/>
          <action application="playback" data="local_stream://moh"/>
    </condition>
</extension>

2)使用L16編碼進行通話

注冊分機,撥打 6001 進行通話,在控制臺可以看到使用的是 L16 編碼:

FreeSWITCH使用L16編碼通信及raw數(shù)據(jù)提取

?3)數(shù)據(jù)抓包及編碼查看

在服務(wù)器上抓包后使用wireshark進行查看:

FreeSWITCH使用L16編碼通信及raw數(shù)據(jù)提取

三、raw數(shù)據(jù)提取及播放

wireshark不能播放L16格式的音頻數(shù)據(jù):

FreeSWITCH使用L16編碼通信及raw數(shù)據(jù)提取

?需要從RTP數(shù)據(jù)中提取payload數(shù)據(jù),然后使用其它工具進行播放。

FreeSWITCH使用L16編碼通信及raw數(shù)據(jù)提取

這里介紹兩種使用python提取raw數(shù)據(jù)的方法,具體如下。

1、使用libpcap從pcap文件提取pcm數(shù)據(jù)

libpcap版本:1.11.0b7

python3如何使用libpcap解析pcap文件,可參考這篇文章:

python3使用libpcap庫進行抓包及數(shù)據(jù)處理

這里示例下提取pcm數(shù)據(jù)的流程。

文件:export_raw_libpcap.py

內(nèi)容如下:

FreeSWITCH使用L16編碼通信及raw數(shù)據(jù)提取

2、使用scapy從pcap文件提取pcm數(shù)據(jù)

scapy版本:2.5.0

scapy地址:https://scapy.net/

scapy文檔地址:https://scapy.readthedocs.io/

這里示例下提取pcm數(shù)據(jù)的流程。

文件:export_raw_scapy.py

內(nèi)容如下:

FreeSWITCH使用L16編碼通信及raw數(shù)據(jù)提取

3、運行效果

運行python腳本,可從pcap文件中提取L16格式的pcm數(shù)據(jù),效果如下:

FreeSWITCH使用L16編碼通信及raw數(shù)據(jù)提取

?4、L16格式音頻播放

可使用 Audacity 、ffmpeg進行播放,具體參考我之前的文章:

pcm音頻的錄制、播放及轉(zhuǎn)換

需要注意的是wireshark抓包的數(shù)據(jù)是大端字節(jié)序,導出的pcm文件是s16be格式。

這里提供一種Windows 10 環(huán)境下使用pyaudio進行播放的方法。

pyaudio 版本 :0.2.13

文件:playL16.py

內(nèi)容如下:

FreeSWITCH使用L16編碼通信及raw數(shù)據(jù)提取

?L16編碼raw數(shù)據(jù)提取及播放效果視頻:

關(guān)注微信公眾號(聊聊博文,文末可掃碼)后回復 2023050701 獲取。?

四、資源下載

本文涉及源碼及二進制文件,可以從如下途徑獲?。?/p>

關(guān)注微信公眾號(聊聊博文,文末可掃碼)后回復 20230507 獲取。?

FreeSWITCH使用L16編碼通信及raw數(shù)據(jù)提取?文章來源地址http://www.zghlxwxcb.cn/news/detail-435951.html

到了這里,關(guān)于FreeSWITCH使用L16編碼通信及raw數(shù)據(jù)提取的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包