簡體   English   中英

我只是聽不到AudioFileReadPackets

[英]I just don't get AudioFileReadPackets

我試圖編寫最小的代碼塊來縮小問題的范圍。 現在只有幾行,並且不起作用,這很清楚地表明我對如何使用AudioFileReadPackets有基本的誤解。 我已經在線閱讀了文檔和其他示例,但顯然我沒有。 你能給我解釋一下嗎?

這是該塊應執行的操作:我以前打開了一個文件。 我只想讀取一個數據包-文件的第一個-然后打印它。 但它在AudioFileReadPackets行上崩潰:

    AudioFileID mAudioFile2; 
    AudioFileOpenURL (audioFileURL, 0x01, 0, &mAudioFile2);
    UInt32 *audioData2 = (UInt32 *)malloc(sizeof(UInt32) * 1);
    AudioFileReadPackets(mAudioFile2, false, NULL, NULL, 0, (UInt32*)1, audioData2);
    NSLog(@"first packet:%i",audioData2[0]);

(為清楚起見,我刪除了所有錯誤處理。)

是AFRP生產線崩潰了。

(我知道第三個和第四個參數是有用的,並且在我的“真實”代碼中,我使用了它們,但是不是必需的,對嗎?因此在這種情況下使用NULL應該對嗎?)那么,這是怎么回事?

任何指導將不勝感激。

謝謝。

我認為您的問題在於數據包數參數。 您只是在創建指向0x00000001的指針。 問題是它嘗試使用此輸出是實際讀取了多少個數據包的輸出。 您的音頻緩沖區可能也太小。 根據文檔,它應該是數據包的長度乘以數據包長度的上限。

嘗試這個:

AudioFileID mAudioFile2; 
AudioFileOpenURL (audioFileURL, 0x01, 0, &mAudioFile2);
UInt32 packetCount = 1;
void *audioData2 = (void *)malloc(packetCount * maxPacketSize);
AudioFileReadPackets(mAudioFile2, false, NULL, NULL, 0, &packetCount, audioData2);
NSLog(@"first packet:%i",audioData2[0]);

不太確定如何獲取maxPacketSize(從未與此配合使用)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM