現在、AudioTrackを使用して録音済みの音楽を再生しています。これはトラックデータをオーディオバッファに書き込むことを含む。オーディオデータストリームを使用してリアルタイムで再生されるオーディオを表す波形を画面上に描画するにはどうすればよいでしょうか?私はどのように起動するのか分からない前にアンドロイド上で高度なグラフィックを使用していません。 OpenGLを使用する必要がありますか、またはビューを実装できますか?また、どのようにデータを描画に使用するのに便利なものに変換するのですか?ByteStreamからAndroid AudioTrackを視覚化する
4
A
答えて
3
あなたの最初のステップは、setPositionNotificationPeriod(periodInFrames)
に電話することです。これは、アプリケーションがonPeriodicNotification
コールを受信する頻度を決定します。したがって、オシロスコープ型のビジュアライゼーションを行っていて、任意の瞬間に画面に50ミリ秒分のオーディオデータを表示したい場合は、periodInFrames
の値を2205に設定します(WAVファイルがモノラル、サンプルあたり16ビット44,100Hzサンプルレート)。
通知イベントの中で、現在AudioTrackオブジェクトの再生がどこにあるかを判断し、元のファイルまたは配列から対応するスライスを取得できます。その後、通常の2Dグラフィックス・メソッドを使用して、このデータスライスをビューに描画します(ここではOpenGLは必要ありません)。 This answerには、オーディオデータのスライスを描画するためのC#サンプルがあります。これはjavaに簡単に変換できます。
だからあなたのコードは、一種の本のように見えることになります:
audioTrack.setPositionNotificationPeriod(2205);
audioTrack.setPlaybackPositionUpdateListener(this);
...
public void onPeriodicNotification(AudioTrack track) {
int pos = track.getNotificationMarkerPosition();
short[] slice = Array.copy(_data, pos, _sliceSize) // pseudo-code
// render the slice to the view
}
2
、その点については、私はあなたが波形アレイまたは周波数配列の生成を処理android.media.audiofx.Visualizer
クラスを使用することを示唆しています。だからあなたが気を配らなければならないのは、グラフィックスの描画だけです。
あなたはAPI 9.
関連する問題
- 1. ハイブデータベースからウェブサイトページにデータを視覚化
- 2. Androidでのリアルタイムデータの視覚化
- 3. データ視覚化フレームワーク
- 4. 視覚化データR
- 5. netcdfファイルからマップを視覚化するには?
- 6. Hibernate HQL(oracle)からSQLを視覚化するには?
- 7. Googleカレンダーでデータを視覚化する
- 8. gccエラーメッセージを視覚化する
- 9. マルチスレッドプロセスを視覚化するには?
- 10. ネットワーク接続を視覚化するツール
- 11. PHPコードのシーケンスを視覚化する
- 12. リアルタイムデータを視覚化するアンドロイドアプリ
- 13. JavaScriptネットワークの視覚化?
- 14. Google Zeitgeist 2011の視覚化
- 15. 視覚化オブジェクトのプロパティ
- 16. python 3D視覚化とグラフィックス
- 17. 3D視覚化回転キューブ
- 18. HTML5オーディオプレーヤーの視覚化
- 19. データ視覚化コンソールでスカラ?
- 20. 視覚化:最善のアプローチですか?
- 21. 動的視覚化ボケ
- 22. WCFサービスの視覚化
- 23. Android:音声レベルの視覚化による音声の録音
- 24. VTK/paraviewによる3D視覚化
- 25. R igraphパッケージによるデータ視覚化
- 26. 六面体で構成を視覚化
- 27. Qtでグラフを視覚化(指示)
- 28. 視覚化のためにデータ値を「平滑化」するアルゴリズム
- 29. Cbjective-Cでオーディオデータを視覚化
- 30. コンパイラの警告を視覚化
感謝のリリース以降にこのクラスを使用することができ、これは私が開始され、右方向への移動を取得する必要があります。私は、これが複数のストリームでどのように機能するか心配する必要があります。 – DeliveryNinja
ええ、それはあなたの難易度をかなり大幅に向上させます。私はあなた自身が1つのストリームにすべてをプレミックスすることをお勧めしますが、それはあなたがやっていることに対しては不可能かもしれません。 – MusiGenesis
私は実際に視覚化された4つのオーディオトラックを実行することを計画しており、レイテンシーはオーディオを記録する際に大きな要因となります。これがどうやって始まるのかは誰が知っていますか? NDK 2.3に移行する必要があるかもしれません。 – DeliveryNinja