0

次のように AVAudio ファイルを再生するメソッドに接続された UITableViewCell 内に UIButton があります。

cell.playButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
cell.playButton.tag = indexPath.row;
[cell.playButton addTarget:self action:@selector(useSelectedFile:) forControlEvents:UIControlEventTouchUpInside];

useSelectedFile メソッドは次のようになります。

-(void) useSelectedFile:(id)sender{

    int tag = [(UIButton *)sender tag];
    NSDictionary *audioFileInformation = [audioCellsArray objectAtIndex:tag];
    NSData *selectedAudioFile = [audioFileInformation objectForKey:@"Data"];
    NSError *error;

    NSString *filePath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:@"sound.caf"];
    [[NSFileManager defaultManager] removeItemAtPath:filePath error:nil];
    [selectedAudioFile writeToFile:filePath atomically:YES];
    NSURL *file = [NSURL fileURLWithPath:filePath]; 


    _audioPlayerForButton = [[AVAudioPlayer alloc] initWithContentsOfURL:file error:&error];
    if (error)
        NSLog(@"Error: %@",
              [error localizedDescription]);
    else
        [_audioPlayerForButton play];

}

ファイルを記録してデータベースに保存し、データを正常に引き出すことはできますが、再生することはできません。現在のコードでは次のようになります。 エラー: 操作を完了できませんでした。(OS ステータス エラー 1954115647)。

そして、私がちょうど使ってみたとき:

_audioPlayerForButton = [[AVAudioPlayer alloc] initWithData:selectedAudioFile error:&error];

再生ボタンを押すと、次のエラーが表示されます: エラー: 操作を完了できませんでした。(OS ステータス エラー 2003334207)。

シミュレーターからディスクに書き込んだファイルを調べると、破損しているように見えますか? ファイル システムは、通常の .caf ファイルのようなオーディオ ファイル (音符の付いた黒) として表示するのではなく、QuickTime シンボルが付いた小さな白いファイルとして表示するため、QuickTime は再生されません。

コマンドラインで macerror statuscode を使用しようとしましたが、「不明なエラー」が返されます。

これを解決してファイルを再生する方法についてのアイデアやヒントはありますか?

4

1 に答える 1

0

ファイルを比較した後、データが異なっていることがはっきりとわかったので、ファイルをBLOBtoとして保存することから変更し、ここからbase64 クラスTEXTを使用してそれらをエンコードしただけでした: iPhone SDK base64 エンコード/デコード

于 2013-04-20T22:35:35.827 に答える