1

mp3 オーディオ ファイルを再生できません。

URL_PATH = @"http://...../.…./A1.mp3";

NSError *エラー;

player = [[AVAudioPlayer alloc]initWithContentsOfURL:[NSURL URLWithString:URL_PATH] error:&error];
if (error) 
{
    NSLog(@"error:%@",error.localizedDescription);
}

if (player ==nil)
{
    NSLog(@"nil");
}
else 
{
    NSLog(@"playing");
    [player play];
}  

エラーコード :

error:The operation couldn’t be completed. (OSStatus error -43.)
nil

どのようにできるのか?ヒントを教えてください。プレサンクス!

4

2 に答える 2

7

ネットワーク ストリームからキャプチャしたオーディオを再生するのに、間違ったプレーヤーを使用しています。以下に関する Apple のドキュメントを参照してくださいAVAudioPlayer

Apple では、ネットワーク ストリームからキャプチャしたオーディオを再生する場合や、I/O レイテンシを非常に低くする必要がある場合を除き、オーディオの再生にこのクラスを使用することをお勧めします。オーディオ テクノロジの概要については、オーディオ & ビデオの開始点およびマルチメディア プログラミング ガイドの「オーディオの使用」を参照してください。

使用する回避策の 1 つAVAudioPlayerは、オーディオのデータを取得してNSData. AVAudioPlayer次に、 byを初期化できますinitWithData:error:。また、コードをメイン キューに入れないでください。そうしないと、ユーザー インターフェイスがユーザーの入力に反応しなくなります。

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    NSURL *mp3URL = [NSURL URLWithString:@"http://zhangmenshiting.baidu.com/data2/music/44799433/4479927746800128.mp3?xcode=dbff90a141d5d136fdc7275fdc3fae126077a44adc974ad8"];
    NSData *data = [NSData dataWithContentsOfURL:mp3URL];
    self.audioPlayer = [[AVAudioPlayer alloc] initWithData:data error:NULL];
    [self.audioPlayer play];
});
于 2013-06-07T03:10:26.273 に答える
0

AVAudioPlayer はオーディオのストリーミング用ではありません。これは、オーディオ ファイルの再生と、既にメモリ内にあるデータを対象としています。そのため、URL ではなくデータで初期化する必要があります。

これがアップルの答えです(ここで見つけることができますhttp://developer.apple.com/library/ios/#qa/qa1634/_index.html):

AVAudioPlayer クラスは、HTTP URL に基づくストリーミング オーディオをサポートしていません。initWithContentsOfURL: で使用される URL は、ファイル URL (file://) でなければなりません。つまり、ローカル パスです。

オーディオ ストリーマーを探している場合は、そのオーディオ ストリーマーをテストできます。

于 2013-06-07T09:03:05.723 に答える