0
A
回答
0
是,其可能的,你需要設置配置AudioQueue因此,
基本上AudioQueue緩衝區大小,具有40ms的進行設置,因此這將是左右,
int AQRecorder::ComputeRecordBufferSize(const AudioStreamBasicDescription *format, float seconds)
{
int packets, frames, bytes = 0;
try {
frames = (int)ceil(seconds * format->mSampleRate);
if (format->mBytesPerFrame > 0)
bytes = frames * format->mBytesPerFrame;
else {
UInt32 maxPacketSize;
if (format->mBytesPerPacket > 0)
maxPacketSize = format->mBytesPerPacket; // constant packet size
else {
UInt32 propertySize = sizeof(maxPacketSize);
XThrowIfError(AudioQueueGetProperty(mQueue, kAudioQueueProperty_MaximumOutputPacketSize, &maxPacketSize,
&propertySize), "couldn't get queue's maximum output packet size");
}
if (format->mFramesPerPacket > 0)
packets = frames/format->mFramesPerPacket;
else
packets = frames; // worst-case scenario: 1 frame in a packet
if (packets == 0) // sanity check
packets = 1;
bytes = packets * maxPacketSize;
}
} catch (CAXException e) {
char buf[256];
return 0;
}
return bytes;
}
,並設置格式,
void AQRecorder::SetupAudioFormat(UInt32 inFormatID)
{
AudioStreamBasicDescription sRecordFormat;
FillOutASBDForLPCM (sRecordFormat,
SAMPLING_RATE,
1,
8*BYTES_PER_PACKET,
8*BYTES_PER_PACKET,
false,
false
);
memset(&mRecordFormat, 0, sizeof(mRecordFormat));
mRecordFormat.SetFrom(sRecordFormat);
}
我的情況,這些宏的值,
#define SAMPLING_RATE 16000
#define kNumberRecordBuffers 3
#define BYTES_PER_PACKET 2
相關問題
- 1. 音頻處理 - 音頻識別
- 2. 錄製音頻中的音頻處理
- 3. 用於Mac上多通道實時音頻處理的音頻隊列
- 4. Scipy - 音頻處理
- 5. Android音頻處理?
- 6. 是否可以從音頻隊列服務訪問解碼的音頻數據?
- 7. 音頻隊列和EXC_BAD_ACCESS
- 8. 有兩種音頻輸出方式可以選擇音頻輸出口嗎?
- 9. Android - 我可以從音頻混音器獲取音頻數據以播放嗎?
- 10. 音頻節目,聲音處理和DSP
- 11. 音頻處理:使用音量級別
- 12. 聲音播放後處理音頻?
- 13. 音頻挖掘和語音處理
- 14. 使用音頻隊列服務記錄到數據的音頻
- 15. 播放流後音頻隊列無法錄製音頻
- 16. 使用音頻隊列或音頻單元的VoIP功能
- 17. 將音頻與音頻隊列服務同步的建議?
- 18. 如何將iPod庫資源連接到音頻隊列服務並使用音頻單元進行處理?
- 19. Matlab實時音頻處理
- 20. iPhone中的音頻處理
- 21. 實時音頻處理Android
- 22. 處理iOS音頻流
- 23. 處理音頻中斷AVAudioPlayer
- 24. kivy中的音頻處理
- 25. JUCE ios音頻處理
- 26. Matlab的音頻處理
- 27. 實時音頻處理Swift
- 28. python3音頻信號處理
- 29. 實時處理YouTube音頻
- 30. php中的音頻處理
嗨羅漢, 感謝您的答覆, 我已經相應改變的項目,它的工作在我結束。由於我是這個領域的新手,我如何確保它在每個數據包40毫秒音頻幀的工作? 感謝,Pravin – Pravin 2013-02-28 10:01:03
AudioQueue框架,當入列的緩衝區被填滿時拋出一個回調,所以最小的間隔時間肯定是40ms ... – Amitg2k12 2013-03-01 16:03:54
感謝Rohan,你能給我一個想法(公式)每個數據包40ms音頻幀計算關於宏/定義即SAMPLING_RATE,kNumberRecordBuffers,BYTES_PER_PACKET – Pravin 2013-03-13 11:30:12