熊愛金 劉奇 馮艷清 趙懷玉
(1.同方電子科技有限公司 江西省九江市 332000 2.天津航海儀器研究所 天津市 300131)
(3.南昌師范學(xué)院 江西省南昌市 330000)
廣播監(jiān)測接收機(jī)可完成對無線電信號監(jiān)測、管理等任務(wù),形成獨立的無線電監(jiān)測管理系統(tǒng),提高無線電監(jiān)測工作的準(zhǔn)確性和可靠性,適用于國家無線電管理、民航、廣電等部門的無線頻譜監(jiān)測系統(tǒng)。對進(jìn)行頻管資源規(guī)劃,頻率審批,臺站設(shè)置、驗收、調(diào)整,為查處違法行為提供技術(shù)依據(jù),在無線電信號和電磁環(huán)境的監(jiān)聽、監(jiān)測等工作中發(fā)揮重要作用。廣播監(jiān)測接收機(jī)工作中產(chǎn)生的原始音頻數(shù)據(jù)尤其重要,利用開源的免費軟件FFmpeg 中的ffmpeg.exe 和ffserver.exe 實現(xiàn)實時播放功能。
FFmpeg 是一個知名的開源自由軟件,它提供了錄制,轉(zhuǎn)換和流化音視和視頻的開放源代碼的解決方案[1]。主要由libavformat、libavcodec、ffmpeg、ffserver 和ffplay 等組成,項目主要組成[3]如表1所示。FFmpeg 其本身是在Linux 平臺下開發(fā)[2],事實上FFmpeg 兼容性和移植性也很好,支持在非常普及的Windows、Mac OS X 等平臺下編譯并在應(yīng)用中使用。這個命名中的前面部分是英文“Fast Forward”的首字母縮寫,后面部分源于MPEG 視頻編碼標(biāo)準(zhǔn)。FFmpeg 支持直接使用可執(zhí)行文件,同時由于源代碼開放又支持源代碼操作;FFmpeg 不僅可以用來處理本地流,同時也可以用來處理實時的網(wǎng)絡(luò)流。本文應(yīng)用的是在Windows 平臺下編譯FFmpeg 產(chǎn)生的可執(zhí)行文件,ffmpeg.exe 和ffserver.exe,即命令行操作,實現(xiàn)轉(zhuǎn)換實時的網(wǎng)絡(luò)流及網(wǎng)絡(luò)傳輸和實時發(fā)布。FFmpeg項目的主要組成如表1所示。
大概實現(xiàn)過程如下:
圖1:啟動ffmpeg.exe 后的運行界面
圖2:啟動ffserver.exe 后的運行界面
圖3:ffserver.conf 文件的主要配置
表1:FFmpeg 項目的主要組成
圖4:ffserver.exe 運行界面
圖5:ffmpeg.exe 的運行界面
圖6:遠(yuǎn)程在線監(jiān)聽
首先,準(zhǔn)備工作。到官網(wǎng)下載Windows 下的一套源碼并解壓,同時下載編譯環(huán)境cygwin 和編譯工具gcc 并安裝,然后在cygwin環(huán)境下對ffmpeg 源碼進(jìn)行編譯,按所需參數(shù)的格式,利用命令行“ ./configure --enable-memalign-hack --enable-ffserver --enablenetwork --enable-protocols --enable-muxers --enable-demuxers --enablelibmp3lame --enable-protocol=file --enable-protocol=pipe --enableprotocol=udp --enable-protocol=tcp --enable-protocol=http --disableyasm”,和“ make &make install”,生成所需的可執(zhí)行文件:ffmpeg.exe 和ffserver.exe 即可。
第二,實時音頻格式轉(zhuǎn)換并轉(zhuǎn)發(fā)。ffmpeg.exe 用來實現(xiàn)將實時音頻原始數(shù)據(jù)轉(zhuǎn)換成.mp3 格式的數(shù)據(jù)。由于FFmpeg 的常用編碼器中并不支持MP3 音頻編碼器,為此,需要在編譯過程中加入動態(tài)庫cygmp3lame-0.dll 支持MP3 編碼。在此過程中我們需要將通過網(wǎng)口接收到來自廣播監(jiān)測接收機(jī)的實時原始音頻數(shù)據(jù)轉(zhuǎn)換成.mp3 數(shù)據(jù),并同時將轉(zhuǎn)換后的.mp3 數(shù)據(jù)實時發(fā)送到feed1.ffm。按實際音頻數(shù)據(jù)格式配置各所需參數(shù)項,利用命令行“D:RemoteCtrlManageffmpegffmpeg.exe -f s8 -ac 1 -ar 56000 -acodec pcm_s8 -i udp://200.200.221.22:5566 -ar 56000 http:// http://200.200.221.22:8090/feed1.ffm”即可實現(xiàn)。其中200.200.221.22:5566 為計算機(jī)與接收機(jī)通信使用的本地IP 和端口號,可按實際配置使用;200.200.221.22:8090為計算機(jī)與ffserver.exe 產(chǎn)生的進(jìn)程通信時ffserver 進(jìn)程所使用的IP地址和端口號,參見后面ffserver.conf 中的具體配置。若計算機(jī)具有唯一IP 地址,則IP 地址可用127.0.0.1。成功啟動ffmpeg.exe 的運行界面,如圖1所示。
第三,服務(wù)器實時播放。ffserver.exe 實現(xiàn)實時播放.mp3 數(shù)據(jù),以便遠(yuǎn)程通過實時音頻流播放地址實現(xiàn)在線收聽。按參數(shù)格式設(shè)置命令行并運行“D:RemoteCtrlManageffmpegffserver.exe -f D:RemoteCtrlManageffmpegffserver.conf”即可實現(xiàn),成功啟動ffserver.exe 后的運行界面如圖2所示。其中ffserver.conf 文件的主要配置如圖3所示。在實際使用中根據(jù)實際具體使用情況,配置實際使用的端口號、IP 地址、配置路徑等信息。
在本系統(tǒng)中,將廣播監(jiān)測接收機(jī)的工作頻率置為一個調(diào)頻廣播的頻點,比如91.000000MHz,同時解調(diào)方式為FM 調(diào)頻狀態(tài),其他參數(shù)且用接收機(jī)工作默認(rèn)的參數(shù),并分別啟動ffserver.exe 和ffmpeg.exe 后,運行界面分別如圖4所示和如圖5所示,遠(yuǎn)程聯(lián)網(wǎng)的客戶端打開系統(tǒng)自帶的應(yīng)用軟件Windows Media Player,打開菜單項“文件”->“打開URL”,輸入“ http://200.200.221.22:8090/live.mp3”后按回車或者點擊確定即可實現(xiàn)在線收聽,如圖6所示。
在廣播監(jiān)測接收機(jī)系統(tǒng)中,利用FFmpeg 中的ffmpeg.exe 實現(xiàn)實時音頻網(wǎng)絡(luò)流格式轉(zhuǎn)換為mp3 格式,同時利用ffserver.exe 實現(xiàn)實時發(fā)布播放音頻。同時FFmpeg 是一個開源免費跨平臺的軟件,屬于自由軟件,這樣一來便于系統(tǒng)的維護(hù)和二次開發(fā)。