Oss程式遷移到Alsa時遇到的問題

來源:互聯網
上載者:User

http://mypyg.iteye.com/blog/845954

這兩天把以前的一個程式從Oss介面改為Alsa介面,按照Alsa的例子將聲音輸出部分修改後,播放時發出的聲音斷斷續續,並且有很大的雜音。開始以為是Format沒有設對,將所有的Format設了一遍仍然不行。將聲音轉成PCM資料用aplay來播放就沒問題,看了aplay的代碼發現自己調用snd_pcm_writei有錯。原來Oss介面時直接使用write(裝置控制代碼,buffer,data_size),現在改成 snd_pcm_writei時沒有修改,snd_pcm_writei要求的參數是(裝置控制代碼,buffer,frame_size),最後一個
frame_size也就是buffer中的資料有多少個frame,這個可以用公式:(buffer_size*8)/(採樣位元*聲道),buffer_size*8是bit數,採樣位元一般是16,聲道就是1或者2,這樣典型的mp3資料比如16bit,立體聲,那麼 frame_size = buffer_size * 8 / (16*2),修改之後,播放正常了。 
PS: 
frame_size其實就是這些資料是多少個sample 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.