日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android音频底层调试-基于tinyalsa

發布時間:2024/4/17 Android 68 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android音频底层调试-基于tinyalsa 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ? 因為Android中默認并沒有使用標準alsa,而是使用的是tinyalsa。所以就算基于命令行的測試也要使用libtinyalsa。Android系統在上層Audio千變萬化的時候,能夠能這些個工具實時查看到,比方音頻通道的切換等等.

?

1.編譯tinyalsa配套工具

$?mmm?external/tinyalsa/

編譯完后會產生tinyplay/tinymix/tinycap等等工具。

tinymix:?查看配置混音器

tinyplay:?播放音頻

tinycap:?錄音

?

2.查看當前系統的聲卡

root@android:/ # cat /proc/asound/cards0 [RKRK616 ]: RK_RK616 - RK_RK616RK_RK6161 [ROCKCHIPSPDIF ]: ROCKCHIP-SPDIF - ROCKCHIP-SPDIFROCKCHIP-SPDIF root@android:/ #

3.tinymix查看混響器

tinymix用法a.不加不論什么參數-顯示當前配置情況?b.tinymix?[ctrl?id]?[var]不加[var]能夠查看該[ctrl?id]可選選項。

root@android:/ # tinymix Number of controls: 7 ctl type num name value 0 ENUM 1 Playback Path OFF 1 ENUM 1 Capture MIC Path MIC OFF 2 ENUM 1 Voice Call Path OFF 3 ENUM 1 Voip Path OFF 4 INT 2 Speaker Playback Volume 0 0 5 INT 2 Headphone Playback Volume 0 0 6 ENUM 1 Modem Input Enable ON root@android:/ #

相應解釋:

英文

中文

備注

Playback?Path

音頻輸出通道

?

Capture?MIC?Path

音頻輸入通道

?

Voice?Call?Pah

通話音頻通道

設備沒有通話模塊,暫無法測試

Voip?Pah?

IP電話音頻通道

場景Gtalk;值有:SPK/HP_NO_MIC/BT

Speaker?Playback?Volume

揚聲器音量

和上層音量值無關

Headphone?Playback?Volume

耳機音量

同上

Modem?Input?Enable

暫不知何用

經測試不能控制音頻輸入輸出

?

?

?

Playback?Path有:

英文

中文

備注

OFF

關閉

?

RCV

?

SPK

揚聲器

經常使用

HP

耳機帶麥

?

HP_NO_MIC

耳機無麥

經常使用

BT

藍牙

?

SPK_HP

?

RING_SPK

?

RING_HP

?

RING_HP_NO_MIC

?

RING_SPK_HP

?

例:將輸出切換到揚聲器

root@android:/ #?tinymix?0?SPK

關于tinymix小結:

通過觀察發現,Android系統的聲音音量的調節并沒有直接使用tinyalsa,而基于上層軟件實現,由于不管上層音量怎么改變。這里看到的都是24(以我採用的設備為例)。

通道的切換是真正使用了tinyalsa,當通過不同通道播放音樂的時候能夠實時觀察到通道的切換。在某個站點上看到Android在沒有聲音播放的3秒后會關于alsa,這里也得到了證實,我曾經覺得Android系統會永久占用音頻設備。

當通過藍牙播放音樂的時候,已經不經過alsa了。tinymix查看得都處理關閉狀態,由于Android4.2的藍牙協議所有在用戶層實現了。直接走uart通道。這種設計方式一時半會不能理解。

?

4.使用tinyplay播放wav音樂

這個僅僅是一個最主要的播放器。所以不支持播放MP3等等壓縮過格式的音樂。

沒有學會使用前。網上都說非常麻煩??墒侨缃窨磥硪稽c也不麻煩,直接播放了44.1kHz/44.8kHzwav音樂。

root@android:/ # tinyplay /sdcard/0_16.wav Playing sample: 2 ch, 44100 hz, 16 bit root@android:/ #

注:播放之前得首先使用tinymix把通道設置好,上文中已經給出了設置到揚聲器中的樣例;因為播放時使用的最大音量進行播放的,所以注意防止被嚇到。這里將測試音頻文件上傳。

?

5.tinycap使用

root@android:/?#?tinycap?/sdcard/test.wav

能夠進行錄音。

?

眼下僅僅遇到這些,就先總結到這,能夠隨時再深入。


20141014更新:

1.原來tinyalsa最原始的源代碼在這里tinyalsa_github。

2.自己fork一份。加入靜態編譯方法以及busybox方式的將tinymix/tinyplay/tinycap/tinypcminfo集成一個tinyalsa。

tinyalsa-utils?包括了tinymix/tinyplay/tinycap/tinypcminfo用法是?tinyalsa?+?工具名。比方要執行tinymix,那么就執行?tinyalsa?mix或者tinyalsa?tinymix。下載地址。

root@android:/?#?tinyalsa?mix??????????????????????????????????????????????????

Mixer?name:?'RK_RK616'

Number?of?controls:?7

ctl type num name?????????????????????????????????????value

0 ENUM 1 Playback?Path????????????????????????????OFF

1 ENUM 1 Capture?MIC?Path?????????????????????????Main?Mic

2 ENUM 1 Voice?Call?Path??????????????????????????OFF

3 ENUM 1 Voip?Path????????????????????????????????OFF

4 INT 2 Speaker?Playback?Volume??????????????????0?0

5 INT 2 Headphone?Playback?Volume????????????????0?0

6 ENUM 1 Modem?Input?Enable???????????????????????ON

root@android:/?#?

3.依據這個[PATCH]?tinyalsa:?new?package信息顯示。以后tinyalsa也會被集成進busybox中。

4.假設出現Failed?to?open?mixer錯誤,代表你的Android設備不是alsa音頻驅動,而是legacy?OSS?device

制作靜態庫參考:LinuxGcc生成和使用靜態庫和動態庫具體解釋



其他被證實為假的如果:

1.須要改寫init.rc讓系統不啟動android相關的服務(mediaserver)

2.須要通過其他途徑獲取tinyalsa.

轉載于:https://www.cnblogs.com/yxwkf/p/5344068.html

總結

以上是生活随笔為你收集整理的Android音频底层调试-基于tinyalsa的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。