0
我正在編寫一個iOS應用程序,需要確定從互聯網上下載的mp3文件中的沉默時段。如何掃描沉默的mp3
通過AVAudioPlayer下載和播放是沒有問題的,但我無法弄清楚如何訪問mp3中的實際音頻幀數據,以便我可以檢測聲音級別以檢測靜音。我已經試過: -
NSURL *fileUrl = [[NSURL alloc] initFileURLWithPath:[self filename]];
ExtAudioFileRef eaf;
OSStatus err = ExtAudioFileOpenURL((CFURLRef)CFBridgingRetain(fileUrl), &eaf);
if (noErr != err)
{
/* handle error */
exit(-1);
}
AudioStreamBasicDescription format;
format.mSampleRate = 44100;
format.mFormatID = kAudioFormatLinearPCM;
format.mFormatFlags = kAudioFormatFlagsNativeEndian;
format.mBitsPerChannel = 16;
format.mChannelsPerFrame = 2;
format.mBytesPerFrame = format.mChannelsPerFrame * 2;
format.mFramesPerPacket = 1;
format.mBytesPerPacket = format.mFramesPerPacket * format.mBytesPerFrame;
err = ExtAudioFileSetProperty(eaf, kExtAudioFileProperty_ClientDataFormat, sizeof(format), &format);
if (noErr != err)
{
/* handle error */
NSLog(@"Error: %d", err);
exit(-1);
}
但它與錯誤1718449215設置的屬性失敗,所以我假設它不會允許我從MP3轉換爲PCM。我希望能夠對文件進行預處理,以便在用戶播放之前知道靜音會發生在哪裏。
任何建議將不勝感激。
謝謝。