2017-05-02 6 views
0

次のコードを使用してオーディオファイルを録音しています。ユーザーが録音を停止したときにSwift 3.0のbase64Stringでオーディオファイルを変換する

let audioFilename = getDocumentsDirectory().appendingPathComponent("tt.mp4") 

    let settings = [ 
     AVFormatIDKey: Int(kAudioFormatMPEG4AAC), 
     AVSampleRateKey: 12000, 
     AVNumberOfChannelsKey: 1, 
     AVEncoderAudioQualityKey: AVAudioQuality.high.rawValue 
    ] 
    do { 
     audioRecorder = try AVAudioRecorder(url: audioFilename, settings: settings) 
     audioRecorder.delegate = self 
     audioRecorder.record() 
    } catch { 
     print(" startRecording fail ") 
    } 

は、今私はbase64文字列内のオーディオファイルを保存します。私は、次のコードでしようとしています:

let player = try? AVAudioPlayer(data:(encodedString?.data(using: String.Encoding.init(rawValue: 0)))!) 
    player?.prepareToPlay() 
    player?.play() 

それはプレイしていない:

let audioData = try? Data(contentsOf: (audioRecorder?.url)!) 
    let encodedString = audioData?.base64EncodedString() 
    print(" data \(encodedString)") 
    //"AAAAGGZ0eXBtcDQyAAAAAG1wNDJpc29t" 

は今、私は、文字列を再生しようとしています。どこに行方が見えないのですか?

+0

'encodedString .dataセクション(使用:?String.Encoding.initを(rawValue :0)) 'は非常に疑わしいようです。 – jjs

答えて

2

base64でエンコードされた文字列を元のデータに変換しようとする最後のコードスニペットにエラーがあります。

私は、実際のオーディオデータを使用してコードを実行しようとしていないが、これは、少なくとも、あなたのデータ変換エラー修正する必要があります。

if let encodedString = encodedString, let data = Data(base64Encoded: encodedString) { 
    let player = try? AVAudioPlayer(data: data) 
    player?.prepareToPlay() 
    player?.play() 
} 
関連する問題