0

インターネットからダウンロードした 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 への変換はできないと思います。ユーザーが再生する前に無音部分が発生する場所を知るために、ファイルを前処理できるようにしたいと考えています。

どんな提案でも大歓迎です。

ありがとう。

4

1 に答える 1

0

AVAssetReader および AVAssetWriter API を使用して、mp3 ファイルを生の PCM (または .wav) データに変換できます。

于 2012-10-17T15:00:14.790 に答える