2011-08-19 16 views
0

URLからストリームを再生するバッファリングエンジンを構築しています。私はMediaPlayerにURLを直接渡すことができないので、mp3とaacの両方をバッファリングする必要があります。私はこの方法を試しました:私は2つの同期スレッドを持って、1つは、バッファからのデータといくつかのファイルを作成し、作成された2番目のファイルを作成する:問題は、メディアプレーヤーがファイルを別のものに切り替えるときに、どうすれば削除できますか?非常に迷惑です...Androidデバイスのギャップバッファー

多分私の方法は間違っています、もし誰もが音を刻むことなく作業方法を提供することができますか?

答えて

0

あなたがギャップレス再生を実現しようとしているようだ...事前にありがとうございました。 (右?) これに向かって達成したいギャップレス再生のレベルを定義する必要があります。ファイル形式/コーデック、サンプルレート、チャンネル数などのオーディオ属性にする必要があります。

あなたのアプローチでは、必ず異なるストリーム間にギャップが表示されます。 (ファイル形式、圧縮、オーディオ属性)。アプリケーションレベルで真のギャップレス再生をachiveする

(私のアプローチ)あなたは、入力ファイルを取り、それをデコードしてPCMサンプルを生成するカスタム・スタックを実装し、次の

  1. を行う必要があります。

  2. リサンプリングしてpcmサンプルを渡し、同じサンプルレートのpcmサンプルを生成します。このスタックは、Parser(MP3、AAC)とデコーダ(MP3、AAC ..)を持ちます。

  3. 入力(ファイル)と出力(リサンプリングされたpcmデータ)でバッファリングモジュールを追加します。

  4. playoutのためにAndroid SDKのAudioTrackクラスを使用してください。あなたは1つのFileFormatは、コーデックとオーディオの属性にこだわる場合

、その後、アプリケーションレベルでは、プレイリスト内のすべてのファイルを連結することができますし、再生のためのMediaPlayerにそれを提供しています。 (オーディオストリームが少ないサイズを持っているので、このソリューションが実用的であることができます。唯一の障害は、ストリームの属性になります。Androidのマルチメディアスタックのサポート動的再構成内のオーディオOMXコンポーネントあれば、これは全く問題ないはずです)

Shash

+0

ありがとうございます...いくつかのコードを提供できますか?役に立つかもしれない^^ – Erenwoid

+0

また、私は方法が良いかどうかわからない^^しかし、私はインターネット上でそれほど多くのものを見つけられませんでした...もう一度ありがとう – Erenwoid