忘・新年会の余興にピッタリ♪
では、今回は録音したデータの WAV ファイルフォーマットでの保存です!
最初は重要性に気がついてなかったんですけど、これがないと、アプリをリスタートするたびに、音声データがなくなっちゃいますよね!
もう、それは大変です。アプリとして致命的な欠陥になっちゃうんで、データの保存の対応をして行きたいと思います。
これに関しても、基本的には、Unity Editor でも、iOS デバイスでも挙動は同じだったんで、Unity Editor 上で動かす事に重点を置いて行きますね。
で、早速ネットで探してみたんですが....
素晴らしいです! Unity コミュニティ!!
似た様な問題を抱えてる人はたくさんいたみたいで、随分と前から、コードがアップされてたみたいです。
ここ なんですが、SavWav class を作ってくれていました!!
このクラスで、前回 マイクから保存された Audio Clip を、.wav ファイルとしてデバイス上に保存して、いつでも Audio Clip 上に読み出して、再生できる様になりますよー!!
コメントによると、機能的には問題ないけど、ちょっとしたファイル情報のバグはあるみたいなんで、もし気に入らない人は、
var samples = new float[clip.samples];
のところを
var samples = new float[clip.samples*clip.channels];
に変えればオッケーみたいです。
で、アプリ側からのコールはこんな感じです。
WavFileManager となってるのが、上にあるGitHub から取ってきた SavWav class になります。
Line 137 で、まずデータの無音部分を削除してます。これがないと、録音時に指定した長さのデータになってしまうんで、必須です。
2番目の引数で、無音を判別する音の大きさを設定してるんですが、色々試した結果、やっぱり 0 が具合良いみたいでした。
その後、Line 143 でセーブするだけ。
セーブ先のパスは、
こんな感じで、
Application.persistentDataPath
から取ってきた物を使えば、Editor でも、デバイスでも問題なく動きました。
ロードはコルーチンで、こんな風になってて、
WWW クラスを使って AudioClip としてロードしてます。
必要なければ、_callback はなくても全然問題ないんですけど、あったほうが UI のアップデートに便利ですよねー。
これで、アプリの再起動後も、録音データの再生は問題なくできる様になりました!!
では、次回は、デバイスでの実行時に出てきた問題の解決方法の巻!
ではまた〜
簡単な、操作説明ビデオですよ
Version 1.0.1 絶賛公開中!!
Version 1.2.0 絶賛公開中!!
iOS デバイスの人は、上のアイコンからダウンロードしてみてね!!
基本無料。ゲーム内課金有り(無料で十分遊べます)
Version 1.1.0 絶賛公開中!!