2

サーバーから取得したサウンド ファイルを Base 64 でエンコードされたファイルとして再生したいと考えています。

これまでのところ、base64 を使用してファイルをデコードし、次のようにファイルに書き込みました。

NSFileManager *fileManager = [NSFileManager defaultManager];            
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);             
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"voicemail.wav"]];
[fileManager createFileAtPath:filepath contents:[responseDict objectForKey:@"ResponseData"] attributes:nil];

ただし、実際にサウンド ファイルを再生するのに問題があります。私のコードはエラーを返します:

操作を完了できませんでした。OS ステータス エラー 2003334207。

どこが間違っているのか教えてください。

NSURL * url = [NSURL fileURLWithPath:filePath];
AVAudioPlayer *sound = [[[AVAudioPlayer alloc] initWithContentsOfURL:url error:&err] autorelease];
if (! sound) {
    NSLog(@"Sound had error %@", [err localizedDescription]);
} else {
    [sound prepareToPlay]; 
    [sound play];
}
4

2 に答える 2

1

@ひまんしゅ

Mattias Wadmanが提案したように、ダウンロードしたファイルをvlc / iTunesメディアプレーヤーを使用して再生しようとしましたが、ファイルが再生されませんでした。したがって、問題は、オーディオコードの再生ではなく、ファイルのエンコードまたはデコードにある可能性があります。同じことを確認したところ、エンコード中に余分な文字が埋め込まれていました。エンコードに取り組み、問題を解決しました。

お役に立てれば。

于 2012-06-06T05:29:37.740 に答える
0
  NSData *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
     NSString *path = [documentsDirectory stringByAppendingPathComponent:@"FileName.mp3"]
    NSURL *url = [[NSURL alloc] initFileURLWithPath: path];   
    AVAudioPlayer *sound = [[[AVAudioPlayer alloc] initWithContentsOfURL:url error:&err] autorelease];
      if (! sound) {
        NSLog(@"Sound had error %@", [err localizedDescription]);
        } else {
       [sound prepareToPlay]; 
       [sound play];
         }
于 2013-07-19T05:51:46.907 に答える