曲をピッカーからwavとして取得し,位相を反転させ,またwavとして保存してそれを聴けるようなiOSアプリを製作中です.
曲をwavとして保存・位相の反転・それをwavとしてまた保存,まではできたのですが,肝心の反転後のwavファイルを再生(player.play())することができません.
Swift5
1・・・ 2 // Documents ディレクトリの URL 3 let documentDirectoryURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0] 4 do{ 5 // Documents ディレクトリ配下のファイル一覧を取得する 6 let contentUrls = try FileManager.default.contentsOfDirectory(at: documentDirectoryURL, includingPropertiesForKeys: nil) 7 for contentUrl in contentUrls { 8 // 拡張子で判定する 9 if contentUrl.pathExtension == "wav" { 10 print("wavファイル : (contentUrl.lastPathComponent)") 11 } 12 13 if contentUrl.lastPathComponent == "reverse.wav" { 14 let file = try! AKAudioFile(forReading: contentUrl) 15 player = AKPlayer(audioFile: file) 16 let frame = Int(file.length) 17 print("位相反転後は(frame)") // ここでフレーム数が0になってしまう 18 break; 19 } 20 } 21 }catch{ 22 print("ファイル一覧取得エラー") 23 } 24 25・・・ 26 27@IBAction func playMinosone(_ sender: Any) { 28 player.play() // ここでエラー 29 }
このようにDocumentsの中のファイル一覧を見てもreverse.wavは存在するし,実機のデータを〇〇.xcappdataでローカルにダウンロードしてもちゃんとreverse.wavが存在して,聴くこともできます.
エラーとしてはAKaudioPlayer: cannot play, reverse.wav is empty or segment is too short
やAKPlayer+Playback.swift:scheduleSegment(at:):208:Unable to schedule file. totalFrames to play is 0. audioFile.length is 0
など,中身が無いと言われます.
どなたかご教授いただければ幸いです.
回答1件
あなたの回答
tips
プレビュー