藍牙開發(fā)實踐1

如何去優(yōu)化一個大的音頻數(shù)據(jù)通過藍牙設(shè)備傳輸?shù)絚端,保證數(shù)據(jù)包的完整汇歹,合理的延遲性黔龟。

我的思路主要是從下面幾個地方開始開展:

現(xiàn)在藍牙的開發(fā)都是ble4.0協(xié)議進行開展了序宦,那我們現(xiàn)在面臨哪些核心的挑戰(zhàn)呢:

1. 核心挑戰(zhàn)

? ? 1.? BLE 帶寬限制:

? ? ?? 藍牙 4.0 的典型傳輸速率為 1 Mbps,但實際應(yīng)用中可用帶寬約 260 Kbps为狸。

? ? ?? 單次數(shù)據(jù)傳輸大小受 MTU 限制(默認 23 字節(jié)歼郭,數(shù)據(jù)部分 20 字節(jié))。

? ? 2.? 數(shù)據(jù)分片和丟包:

? ? ?? 音頻數(shù)據(jù)較大辐棒,需要分片傳輸病曾。

? ? ?? 可能因干擾、帶寬不足導(dǎo)致丟包漾根。

? ? 3.? 實時性:

? ? ?? 需要小延遲傳輸音頻泰涂,避免累積數(shù)據(jù)包。

? ? 4.? 數(shù)據(jù)完整性:

? ? ?? 需要檢測并恢復(fù)丟失的分片數(shù)據(jù)辐怕。

針對這些問題逼蒙,我們就要開始想出一些對應(yīng)的優(yōu)化方案:

1. BLE 數(shù)據(jù)傳輸優(yōu)化

(1) 增加 MTU

協(xié)商更大的 MTU,減少分片次數(shù)寄疏,提高傳輸效率是牢。

[peripheral requestMtu:185]; // 適用于 Android,

iOS 會自動協(xié)商最大 MTU陕截。

(2) 減少連接間隔

設(shè)置連接間隔到較小值(7.5ms 至 15ms)(建議值)驳棱,提高數(shù)據(jù)傳輸頻率。

NSDictionary *options = @{

? ? CBConnectPeripheralOptionMinimumConnectionIntervalKey: @(0.0075), // 7.5ms

? ? CBConnectPeripheralOptionMaximumConnectionIntervalKey: @(0.015)? // 15ms

};

2. 數(shù)據(jù)分片和重組

(1) 數(shù)據(jù)包格式

(2) 分片發(fā)送

將音頻數(shù)據(jù)分片成小包(不超過 MTU - 1 字節(jié))农曲,逐包發(fā)送社搅。

3. 確保數(shù)據(jù)完整性

(1) 序號管理

? ? ?? 發(fā)送端:每個數(shù)據(jù)包附加序號,按序發(fā)送。

? ? ?? 接收端:

? ? ?? 檢測序號是否連續(xù)形葬。

? ? ?? 序號不連續(xù)時却汉,標記丟失并請求重傳。

(2) ACK 重傳機制

? ? ?? 發(fā)送端等待接收端返回 ACK荷并,未收到則重傳合砂。


4. 提高實時性

(1) 音頻編碼

? ? ?? 使用高效音頻編碼減少數(shù)據(jù)量,提高實時性源织。

? ? ?? 推薦使用 ADPCM 或 Opus翩伪。

? ? ?? ADPCM:輕量級、適合 BLE谈息。

? ? ?? Opus:高壓縮比缘屹、適合高質(zhì)量音頻。

? ? ?? 示例:

? ? ?? 原始 PCM 音頻為 16KHz侠仇,16 位單聲道轻姿,數(shù)據(jù)量約為 256 KB/s。

? ? ?? 使用 Opus 編碼后逻炊,數(shù)據(jù)量減少到 8-64 KB/s互亮。

(2) 數(shù)據(jù)緩沖

? ? ?? 在接收端使用環(huán)形緩沖區(qū)存儲接收到的音頻數(shù)據(jù),按時間順序播放余素,避免延遲豹休。

? ? (2) 數(shù)據(jù)緩沖

? ? ?? 在接收端使用環(huán)形緩沖區(qū)存儲接收到的音頻數(shù)據(jù),按時間順序播放桨吊,避免延遲威根。

5. 重傳機制

? ? 1.? 接收端:

? ? ?? 記錄丟失的數(shù)據(jù)包序號。

? ? ?? 發(fā)送重傳請求到發(fā)送端视乐。

? ? 2.? 發(fā)送端:

? ? ?? 在接收到重傳請求時洛搀,重新發(fā)送丟失的數(shù)據(jù)包。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末佑淀,一起剝皮案震驚了整個濱河市留美,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌渣聚,老刑警劉巖独榴,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異奕枝,居然都是意外死亡棺榔,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進店門隘道,熙熙樓的掌柜王于貴愁眉苦臉地迎上來症歇,“玉大人郎笆,你說我怎么就攤上這事⊥睿” “怎么了宛蚓?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長设塔。 經(jīng)常有香客問我凄吏,道長,這世上最難降的妖魔是什么闰蛔? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任痕钢,我火速辦了婚禮,結(jié)果婚禮上序六,老公的妹妹穿的比我還像新娘任连。我一直安慰自己,他們只是感情好例诀,可當我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布随抠。 她就那樣靜靜地躺著,像睡著了一般繁涂。 火紅的嫁衣襯著肌膚如雪拱她。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天爆土,我揣著相機與錄音椭懊,去河邊找鬼。 笑死步势,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的背犯。 我是一名探鬼主播坏瘩,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼漠魏!你這毒婦竟也來了倔矾?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤柱锹,失蹤者是張志新(化名)和其女友劉穎哪自,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體禁熏,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡壤巷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了瞧毙。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片胧华。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡寄症,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出矩动,到底是詐尸還是另有隱情有巧,我是刑警寧澤,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布悲没,位于F島的核電站篮迎,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏示姿。R本人自食惡果不足惜柑潦,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望峻凫。 院中可真熱鬧渗鬼,春花似錦、人聲如沸荧琼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽命锄。三九已至堰乔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間脐恩,已是汗流浹背镐侯。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留驶冒,地道東北人苟翻。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像骗污,于是被迫代替她去往敵國和親崇猫。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,689評論 2 354

推薦閱讀更多精彩內(nèi)容