回答
對於實時音頻讀取或播放,您通常會創建一個專用的高優先級工作線程來調用,然後使用一些環形緩衝區。你的線程應該避免鎖定。
ALSA例子:
http://www.alsa-project.org/alsa-doc/alsa-lib/_2test_2latency_8c-example.html#a36
http://www.alsa-project.org/alsa-doc/alsa-lib/_2test_2pcm_8c-example.html
如果你只是從磁盤讀取,你要足夠的緩衝,然後就醒了,看看你是否需要之前閱讀更多下一次你醒來(考慮總延遲)。
是snd_pcm_wait()我需要調用的函數?我還不是很清楚? – Xofo 2010-10-09 01:13:00
@Xofo對不起,問題是waaay廣泛的回答我在合理的時間內(或簡潔地) - 我甚至不知道你在做什麼音頻(填充/複製,生成,處理,從磁盤讀取,從其他數據源讀取)。這將有助於爲您的帖子添加大量細節。這些文檔可能會回答您的一些高級問題(有關通知的註釋以及alsa如何處理數據交換 - 如果您只需在簡單程序中使用輪詢例程,snd_pcm_wait可能就是您想要的):http://www.alsa -project.org/alsa-doc/alsa-lib/pcm.html – justin 2010-10-10 04:48:52
- 1. 如何在音頻(.wav或.mp3)文件中每秒獲取幀(或樣本)的數量或毫秒數?
- 2. 1000毫秒每100毫秒執行一次操作
- 3. 獲取一天中的毫秒數
- 4. 每N毫秒播放聲音
- 5. 將音頻數據從ALSA緩衝區讀取到numpy陣列
- 6. 如何使用增量毫秒來每x毫秒執行一次?
- 7. 我想每秒調用20次installTapOnBus:bufferSize:format:block:
- 8. LookupAccountSid每次撥打+600毫秒
- 9. 獲取毫秒從日曆一個月
- 10. EnableRaisingEvents每100毫秒?
- 11. java.util.Date中取毫秒
- 12. 在微秒或毫秒中獲取時間差在PHP中
- 13. Windows套接字TCP客戶端每200毫秒接收一次數據(QTCPSocket)
- 14. 經過時間20毫秒精度
- 15. 向毫秒添加毫秒並通過JavaScript獲取新日期
- 16. 如果在過去的20秒內在sql中添加一次數據,則會添加一次新數據
- 17. 每x秒獲取一次加速度計讀數的方法?
- 18. 毫微秒到毫微秒的轉換毫秒數<999999在Java中
- 19. 如何讓Perl每20秒運行一次代碼?
- 20. Jquery:每20秒自動執行一次鼠標移動
- 21. Android - 相機,每20秒保存一次圖片
- 22. 每20秒更換一次圖像Javascript with Row
- 23. Python每20秒運行一次cron作業
- 24. AJAX優化 - 而不是每2毫秒檢查一次?
- 25. 簡單的節拍器 - 每x毫秒播放一次AIF
- 26. 自動化gdb:每10毫秒顯示一次回溯
- 27. 從Google Assistant獲取音頻數據
- 28. 獲取音頻緩衝區數據
- 29. 從PCM數據獲取音頻信息
- 30. 每n毫秒寫一個字符串
我應該添加...什麼是正確的方式來做到這一點在ALSA ...或者我需要使用睡眠或一些pthread_cond_timed_wait或類似的東西... – Xofo 2010-10-09 00:18:11