最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在Ubuntu上使用FFmpeg實(shí)現(xiàn)RTP音頻傳輸與播放的完整流程

 更新時間:2025年07月28日 10:20:14   作者:is0815  
在音視頻開發(fā)或遠(yuǎn)程通信場景中,RTP是一種常用的實(shí)時音頻傳輸協(xié)議,本文將介紹如何使用 FFmpeg 在 Ubuntu 上實(shí)現(xiàn)從一臺主機(jī)發(fā)送音頻流,另一臺主機(jī)接收并播放音頻的完整流程,需要的朋友可以參考下

引言

在音視頻開發(fā)或遠(yuǎn)程通信場景中,RTP(Real-time Transport Protocol) 是一種常用的實(shí)時音頻傳輸協(xié)議。本文將介紹如何使用 FFmpeg 在 Ubuntu 上實(shí)現(xiàn)從一臺主機(jī)發(fā)送音頻流,另一臺主機(jī)接收并播放音頻的完整流程。

目標(biāo):從 192.168.1.129 推送 test.wav 音頻文件,通過 RTP 發(fā)送到 192.168.1.137,后者通過 ffplay 播放。

環(huán)境準(zhǔn)備

兩臺 Ubuntu 主機(jī)(或一臺主機(jī)多個終端模擬)

安裝 FFmpeg:

sudo apt install ffmpeg

音頻測試文件 test.wav,要求:

  • 格式:PCM 16-bit Big Endian(對應(yīng) RTP 中的 L16
  • 采樣率:16000 Hz
  • 聲道:單聲道

可用以下命令確認(rèn):

ffmpeg -i test.wav

推送端配置(192.168.1.129)

使用 ffmpeg 推送音頻流:

ffmpeg -re -stream_loop -1 -i test.wav \
  -acodec pcm_s16be -ar 16000 -ac 1 \
  -payload_type 97 \
  -f rtp rtp://192.168.1.137:5004

說明:

  • pcm_s16be:必須是 Big Endian,才能對應(yīng) RTP 中的 L16
  • -payload_type 97:動態(tài)負(fù)載編號,需與 SDP 一致
  • 5004:目標(biāo)主機(jī) RTP 監(jiān)聽端口

接收端配置(192.168.1.137)

Step 1:創(chuàng)建 SDP 文件

RTP 接收端需要通過 SDP 文件了解流的參數(shù)。

新建 audio.sdp 文件:

v=0
o=- 0 0 IN IP4 192.168.1.137
s=RTP Audio
c=IN IP4 192.168.1.137
t=0 0
m=audio 5004 RTP/AVP 97
a=rtpmap:97 L16/16000/1

97 為動態(tài) payload 類型,與推送端匹配
L16/16000/1 表示 16-bit PCM / 16000Hz / Mono

Step 2:使用 ffplay 播放

運(yùn)行:

ffplay -protocol_whitelist file,udp,rtp -i audio.sdp

如果推送成功,你將聽到 test.wav 被循環(huán)播放。

常見問題排查

問題原因與解決方法
聽到「嘟嘟」噪音使用 nc 監(jiān)聽原始 RTP 數(shù)據(jù) → 無法解碼 RTP header,不能作為播放器使用
沒有聲音,ffplay 無報錯編碼格式不匹配,確保 pcm_s16be 與 SDP 中的 L16 一致
ffplay 顯示 0KB 緩沖推送沒啟動 / IP 寫錯 / 防火墻阻擋
播放器顯示 Unable to receive RTP payloadSDP 文件不完整或 payload type 不一致

網(wǎng)絡(luò)連通性驗(yàn)證技巧

在接收端檢查 UDP 流是否達(dá)到:

tcpdump -n -i any udp port 5004

確認(rèn)有數(shù)據(jù)包進(jìn)來再進(jìn)一步排查音頻格式問題。

附加:麥克風(fēng)實(shí)時采集推流(可選)

使用 arecord 實(shí)時采集麥克風(fēng)音頻并通過 FFmpeg 發(fā)送:

arecord -D hw:0,0 -f S16_LE -c 1 -r 16000 -t raw | \
ffmpeg -f s16le -ar 16000 -ac 1 -i - \
  -acodec pcm_s16be -f rtp rtp://192.168.1.137:5004

此時接收端仍可使用前文 SDP 文件播放。

總結(jié)

通過本文方法,你可以成功實(shí)現(xiàn):

  • RTP 音頻流從一臺主機(jī)傳輸?shù)搅硪慌_
  • 使用標(biāo)準(zhǔn) SDP 描述流參數(shù)
  • 基于 FFmpeg 與 ffplay 全流程構(gòu)建測試環(huán)境

附錄:完整腳本示例

播放器腳本 play_rtp.sh

#!/bin/bash
cat > audio.sdp <<EOF
v=0
o=- 0 0 IN IP4 192.168.1.137
s=RTP Audio
c=IN IP4 192.168.1.137
t=0 0
m=audio 5004 RTP/AVP 97
a=rtpmap:97 L16/16000/1
EOF

ffplay -protocol_whitelist file,udp,rtp -i audio.sdp

推流腳本 send_rtp.sh

#!/bin/bash
ffmpeg -re -stream_loop -1 -i test.wav \
  -acodec pcm_s16be -ar 16000 -ac 1 \
  -payload_type 97 -f rtp rtp://192.168.1.137:5004

如有更高需求,例如 RTP over RTSP 或 WebRTC,可以進(jìn)一步拓展。

以上就是在Ubuntu上使用FFmpeg實(shí)現(xiàn)RTP音頻傳輸與播放的完整流程的詳細(xì)內(nèi)容,更多關(guān)于Ubuntu FFmpeg RTP音頻傳輸與播放的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 詳解虛擬機(jī)下CentOS 6.5配置IP地址的三種方法

    詳解虛擬機(jī)下CentOS 6.5配置IP地址的三種方法

    本篇文章主要介紹了虛擬機(jī)下CentOS 6.5配置IP地址的三種方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • linux如何編寫同步文件的腳本

    linux如何編寫同步文件的腳本

    這篇文章主要介紹了linux如何編寫同步文件的腳本問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Linux系統(tǒng)配置(服務(wù)控制)詳細(xì)介紹

    Linux系統(tǒng)配置(服務(wù)控制)詳細(xì)介紹

    大家好,本篇文章主要講的是Linux系統(tǒng)配置(服務(wù)控制)詳細(xì)介紹,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • linux服務(wù)器磁盤擴(kuò)容的方法(圖)

    linux服務(wù)器磁盤擴(kuò)容的方法(圖)

    如果你的linux服務(wù)器磁盤不夠用了,那就需要給磁盤擴(kuò)容了,下面我們介紹一下linux服務(wù)器磁盤擴(kuò)容的方法,大家參考使用吧
    2014-01-01
  • Apache簡介及安全配置方案

    Apache簡介及安全配置方案

    Apache HTTP Server(簡稱Apache)是Apache軟件基金會的一個開放源碼的網(wǎng)頁服務(wù)器,可以在大多數(shù)計算機(jī)操作系統(tǒng)中運(yùn)行,由于其多平臺和安全性被廣泛使用,是最流行的Web服務(wù)器端軟件之一。它快速、可靠并且可通過簡單的API擴(kuò)展,將Perl/Python等解釋器編譯到服務(wù)器中。
    2014-08-08
  • Linux gnome桌面環(huán)境切換KDE_Plasma實(shí)現(xiàn)過程

    Linux gnome桌面環(huán)境切換KDE_Plasma實(shí)現(xiàn)過程

    這篇文章主要介紹了Linux gnome桌面環(huán)境切換KDE_Plasma實(shí)現(xiàn)過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2026-01-01
  • Linux服務(wù)器VPS的Windows?DD包詳細(xì)的制作教程

    Linux服務(wù)器VPS的Windows?DD包詳細(xì)的制作教程

    這里就說下Windows?dd包的制作過程,雖然網(wǎng)上很多這樣的dd包,但對于一些來歷不明的,也會有點(diǎn)不放心,所以我們有時間的話可以自己定制一個
    2022-08-08
  • PHP腳本內(nèi)存泄露導(dǎo)致Apache頻繁宕機(jī)解決方法

    PHP腳本內(nèi)存泄露導(dǎo)致Apache頻繁宕機(jī)解決方法

    這篇文章主要介紹了PHP腳本內(nèi)存泄露導(dǎo)致Apache頻繁宕機(jī)解決方法,本文的原因是因?yàn)镸axRequestsPerChild參數(shù)沒有配置正確,配置MaxRequestsPerChild后解決了本文中的問題,需要的朋友可以參考下
    2014-09-09
  • 關(guān)于VPS內(nèi)存不足的一些說明和解決辦法

    關(guān)于VPS內(nèi)存不足的一些說明和解決辦法

    關(guān)于VPS內(nèi)存不足的一些說明和解決辦法,需要的朋友可以參考下。
    2011-11-11
  • Linux如何安裝JDK 17

    Linux如何安裝JDK 17

    本文詳細(xì)介紹了在Linux系統(tǒng)上安裝JDK17的步驟,包括下載安裝包、創(chuàng)建安裝目錄、上傳與解壓、配置環(huán)境變量、使環(huán)境變量生效以及驗(yàn)證安裝
    2025-02-02

最新評論

庄浪县| 峨山| 图们市| 和静县| 阿克| 石家庄市| 寿宁县| 庐江县| 乌兰察布市| 拜泉县| 利辛县| 明星| 武功县| 临西县| 广平县| 曲沃县| 大化| 乌鲁木齐市| 浮山县| 天全县| 临泉县| 荃湾区| 贵港市| 海伦市| 云龙县| 常宁市| 通州区| 东阿县| 宝鸡市| 德格县| 奉贤区| 浪卡子县| 民权县| 神木县| 增城市| 镇安县| 侯马市| 南昌市| 忻城县| 安西县| 景东|