問題タブ [opensl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - OpenSL - Audio Player オブジェクトのシークが不十分
大きなmp3オーディオファイル(〜90分)の特定のポイントを正確にシークできる必要があるAndroidアプリケーションを作成しています。
現在、mp3 ファイルと MIME 情報を指定する URI データ ソースを持つオーディオ プレーヤー オブジェクトで OpenSL アプローチを使用しています。
これをテストするために、プレーヤーの SLSeekITF インターフェイスを使用して、特定のポイント (ミリ秒単位で指定) をシークします。ただし、シークのパフォーマンスが低く、一貫性がないことがわかりました。多くの場合、音声はあるべき場所から 1 ~ 10 秒ずれています。時には前に、時には後ろに。短い mp3 ファイルを使用すると、パフォーマンスが少し向上しますが、十分とは言えません。
シーク モード (「正確」と「高速」) は、SLSeekITF では何の違いもないようです。
他のプラットフォームでは、ほとんど目立たない 50 ミリ秒未満の非常に正確なシーク位置を取得できるため、これが可能であることはわかっています。
- OpenSL オーディオ プレーヤーの精度を高める方法を知っている人はいますか? - この実装に関する既知の問題はありますか? -より優れたパフォーマンスを提供する他の mp3 デコーダーはありますか?
ありがとう
android - OpenSL を使用した Android での音声通話
私は論文の VoIP アプリケーションをやっています。誰かがこのシナリオで私を助けることができるかどうか知りたいです.AudioThreadとAudioSendThreadの2つのスレッドがあります. 最初のものは、DatagramSocket を介してオーディオ パケットを受信し、電話で再生するリスナーです。2 つ目は、20 ミリ秒のサウンドを取得して他のデバイスに送信するレコーダーです。Javaで実装しましたが、非常に遅いので、OpenSLを試すことにしましたが、このようなドキュメントは見つかりません。
これはAudioSendThreadです
そしてこれが AudioThread
}
他のネイティブ メソッドは、NDK の NativeAudio サンプルによって取得されます。
提案をありがとう!
android - FFmpeg で PCM をリサンプリングする Android Opensles
Androidでffmpegとopenslesを使用してオーディオストリームを再生しようとしています。そして問題は、デコードされた再サンプリングされたフレームをffmpegからopenslesに渡すときに、聞こえる音がロボットのように聞こえ、引っかき傷があるようです。
ffmpeg からデコードされたフレーム:
この場合、Opensles が必要です。
Opensles のセットアップ:
これは、opensles へのリサンプリングとエンキューの擬似コードです。
助けていただければ幸いです、ありがとう。
android - OpenSL ES レコーダー オブジェクトでインターフェイス SL_IID_ANDROIDSIMPLEBUFFERQUEUE を要求すると、SL_RESULT_FEATURE_UNSUPPORTED が返されます
Android NDK と OpenSL ES を使用して、基本的なレコーダー アプリを作成しました。コンパイルとリンクは正常に行われますが、Galaxy Nexus デバイスで実行しようとすると、次のエラーが発生します。
W/libOpenSLES(10708): Leaving Object::GetInterface (SL_RESULT_FEATURE_UNSUPPORTED)
これは次の行で発生します。
res = (*recorderObj)->GetInterface(recorderObj, SL_IID_ANDROIDSIMPLEBUFFERQUEUE, &recorderBufferQueueItf);
これは、Galaxy Nexus デバイスでの OpenSL ES を使用した記録がサポートされていないということですか、それとも単に私のミスでしょうか? 以下は関連するコードです。
この問題に関するヘルプは大歓迎です:)
android - openSL Enqueue はバッファを次々に再生しますか? なぜ混合しないのですか?
openSL で simpleBufferQueue を作成すると、バッファが次々に再生されるのはなぜですか? このシナリオはどのように役立ちますか? より実用的な使用法は、5 つ以上のバッファーで作成でき、バッファーをエンキューするとすぐにそれらを混合/同時に再生できる場合です。
現時点では、サウンドを一緒に再生する唯一の方法は、複数の単純なバッファー キュー AudioPlayer を作成することです。
openSL ドキュメントで何か間違ったことを読んでいる場合は、助けて修正してください。
android - AndroidはOpenSL ESでSLAndroidSimpleBufferQueueItfのみをサポートしていますか?
SLAndroidSimpleBufferQueueItf は Android openSL ES でサポートされている唯一のバッファ キュー インターフェイスですか? このインターフェイスは、RegisterCallBack() 中に設定されたカスタム ポインターのみを返しますが、ID またはポインターによって少なくともどのバッファーがコールバックを取得するかについての情報を取得する方法はありません。コールバックにあるバッファを特定する方法について、誰かがヒントを提供できますか?
ありがとう。