Android で暗号化されたファイルを再生できるようにする必要があります。
ファイルはAACです。
これを行う唯一の方法は次のいずれかです。
- ファイルを内部のプライベート ストレージに復号化し、プレーヤーをそのファイルに向けて再生する、または
- ファイルを復号化して pcm にデコードし、AudioTrack にフィードします。
1 は、時間がかかるためあまり良くありません。
HWデコーダーを利用してこれを行う方法がわからないため、2もあまり良くありません。
何か案は?
ティア。
Android で暗号化されたファイルを再生できるようにする必要があります。
ファイルはAACです。
これを行う唯一の方法は次のいずれかです。
1 は、時間がかかるためあまり良くありません。
HWデコーダーを利用してこれを行う方法がわからないため、2もあまり良くありません。
何か案は?
ティア。
ストリームで復号化できる暗号化形式がある場合は、ストリーム ソースとメディア プレーヤーの間にプロキシを挿入して、そこから読み取ることができます。
NPR Android News アプリには、2.2 より前のデバイスが Shoutcast ストリームを適切に処理できるようにするために挿入されたプロキシの例があります。これがどのように行われるかについてはソース コードのStreamProxy クラスを参照し、その実装については PlaybackService クラスの 410 ~ 418 行 (最終更新時) を参照してください。基本的には、ローカル プロキシ サーバーを経由するように URL を変更しただけです。
if (stream && Build.VERSION.SDK_INT < 8) {
if (proxy == null) {
proxy = new StreamProxy();
proxy.init();
proxy.start();
}
playUrl = String.format("http://127.0.0.1:%d/%s",
proxy.getPort(), url);
}
ストリームがインターネットではなくローカル ファイルからのものである場合は、メディア プレーヤーとのインターフェイスとしてテスト ハーネスとして作成したHttpRawResourceServerのようなものを実行できます。
Android は .AAC 形式をサポートしていないと思います。
3GPP (.3gp) and MPEG-4 (.mp4, .m4a). No support for raw AAC (.aac)
ただし、Android OpenCORE 内のファイル playerdriver.cpp を次の行に変更できます::
mDataSource->SetDataSourceFormatType(PVMF_FORMAT_UNKNOWN);
に
mDataSource->SetDataSourceFormatType(PVMF_AACFF);
次に、AACファイルを再生できます=)