インターネットからダウンロードした mp3 ファイル内の無音期間を識別する必要がある iOS アプリを作成しています。
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);
}
しかし、set プロパティではエラー 1718449215 で失敗するので、MP3 から PCM への変換はできないと思います。ユーザーが再生する前に無音部分が発生する場所を知るために、ファイルを前処理できるようにしたいと考えています。
どんな提案でも大歓迎です。
ありがとう。