UIDocumentBrowserViewController経由で取得したオーディオファイルからAVAudioFileを生成する

オーディオファイルをMacや他のiOSアプリから自分のアプリに渡す場合、UIDocumentBrowserViewControllerが簡単で便利だが、

画像1

ここで選択したオーディオファイル(.m4aとか)のURLをUIDocumentBrowserViewControllerDelegateのdocumentBrowser(_:didPickDocumentURLs:)メソッドから取得して、

   func documentBrowser(_ controller: UIDocumentBrowserViewController, didPickDocumentURLs documentURLs: [URL]) {
       print("\(type(of: self))/\(#function)")
       if let fileUrl = documentURLs.first {
           ...
       }
   }

そのURLオブジェクトを用いて次のようにAVAudioFileを生成しようとすると、何やらエラーになる。

let audioFile = try? AVAudioFile(forReading: fileUrl)
(ExtAudioFileOpenURL((CFURLRef)fileURL, &_extAudioFile)): error -54

ちなみにここからAVAudioPCMBufferを生成したい。

解決法

ここから先は

2,912字
文章やサンプルコードは多少荒削りかもしれませんが、ブログや書籍にはまだ書いていないことを日々大量に載せています。たったの400円で、すぐに購読解除してもその月は過去記事もさかのぼって読めるので、少しでも気になる内容がある方にはオトクかと思います。

技術的なメモやサンプルコード、思いついたアイデア、考えたこと、お金の話等々、頭をよぎった諸々を気軽に垂れ流しています。

最後まで読んでいただきありがとうございます!もし参考になる部分があれば、スキを押していただけると励みになります。 Twitterもフォローしていただけたら嬉しいです。 https://twitter.com/shu223/