linux中的alsa工具與Android中的tinyalsa工具【轉】

來源:互聯網
上載者:User

標籤:volume   啟動   load   sdcard   pen   音頻   play   int   mp3   

本文轉載自:http://blog.csdn.net/luckywang1103/article/details/48053015

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

 

目錄(?)[+]

 

      由於Android中預設並沒有使用標準alsa,而是使用的是tinyalsa,所以就算基於命令列的測試也要使用libtinyalsa。Android系統在上層Audio千變萬化的時候,可以能這些個工具即時查看到,比如音頻通道的切換等等.

 

1.編譯tinyalsa配套工具

$ mmm external/tinyalsa/

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

tinymix: 查看配置混音器

tinyplay: 播放音頻

tinycap: 錄音

 

2.查看當前系統的音效卡

 

[python] view plain copy 
  1. [email protected]:/ # cat /proc/asound/cards  
  2.  0 [RKRK616        ]: RK_RK616 - RK_RK616  
  3.                       RK_RK616  
  4.  1 [ROCKCHIPSPDIF  ]: ROCKCHIP-SPDIF - ROCKCHIP-SPDIF  
  5.                       ROCKCHIP-SPDIF  
  6. [email protected]:/ #   

 

3.tinymix查看混響器

tinymix使用方法a.不加任何參數-顯示當前配置情況 b.tinymix [ctrl id] [var]不加[var]可以查看該[ctrl id]可選選項。

 

[python] view plain copy 
  1. [email protected]:/ # tinymix  
  2. Number of controls: 7  
  3. ctl type    num name                                     value  
  4. 0   ENUM    1   Playback Path                            OFF  
  5. 1   ENUM    1   Capture MIC Path                         MIC OFF  
  6. 2   ENUM    1   Voice Call Path                          OFF  
  7. 3   ENUM    1   Voip Path                                OFF  
  8. 4   INT 2   Speaker Playback Volume                  0 0  
  9. 5   INT 2   Headphone Playback Volume                0 0  
  10. 6   ENUM    1   Modem Input Enable                       ON  
  11. [email protected]:/ #  

 

對應解釋:

英文

中文

備忘

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

 

例:將輸出切換到擴音器

[email protected]:/ # tinymix 0 SPK

關於tinymix小結:

通過觀察發現,Android系統的聲音音量的調節並沒有直接使用tinyalsa,而基於上層軟體實現,因為無論上層音量怎麼改變,這裡看到的都是24(以我採用的裝置為例)。通道的切換是真正使用了tinyalsa,當通過不同通道播放音樂的時候可以即時觀察到通道的切換。在某個網站上看到Android在沒有聲音播放的3秒後會關於alsa,這裡也得到了證實,我以前認為Android系統會永久佔用音訊裝置。

當通過藍芽播放音樂的時候,已經不經過alsa了。tinymix查看得都處理關閉狀態,因為Android4.2的藍芽協議全部在使用者層實現了,直接走uart通道。這樣的設計方式一時半會不能理解。

 

4.使用tinyplay播放wav音樂

這個只是一個最基本的播放器,所以不支援播放MP3等等壓縮過格式的音樂。沒有學會使用前,網上都說很麻煩,但是現在看來一點也不麻煩,直接播放了44.1kHz/44.8kHz的wav音樂。

 

[python] view plain copy 
  1. [email protected]:/ # tinyplay /sdcard/0_16.wav                                       
  2. Playing sample: 2 ch, 44100 hz, 16 bit  
  3. [email protected]:/ #   

 

註:播放之前得首先使用tinymix把通道設定好,上文中已經給出了設定到擴音器中的例子;由於播放時使用的最大音量進行播放的,所以注意防止被嚇到。這裡將測試音頻檔案上傳。

 

5.tinycap使用

[email protected]:/ # 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。。

[email protected]:/ # 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

[email protected]:/ # 

3.根據這個[PATCH] tinyalsa: new package資訊顯示,以後tinyalsa也會被整合進busybox中。

4.如果出現Failed to open mixer錯誤,代表你的Android裝置不是alsa音頻驅動,而是legacy OSS device。

製作靜態庫參考:Linux下Gcc產生和使用靜態庫和動態庫詳解


 

其它被證實為假的假設:

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

2.需要通過其它途徑擷取tinyalsa.

 

linux中的alsa工具與Android中的tinyalsa工具【轉】

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.