开发者

how to play an encrypted file in Android

开发者 https://www.devze.com 2022-12-27 02:21 出处:网络
I need to be able to play an encrypted file in Android. The file is AAC. The only way I can see to do this is either:

I need to be able to play an encrypted file in Android.

The file is AAC.

The only way I can see to do this is either:

  1. decrypt the file to internal private storage and point the player at that file to play, or
  2. decrypt & decode the file to pcm and feed it to an AudioTr开发者_运维百科ack.

1 isn't great because it takes a long time to do that.

2 isn't great either because I don't know how I can take advantage of the HW decoder to do this.

Any ideas?

tia.


If you have an encryption format that can be decrypted on a stream, then you can insert a proxy between the stream source and the media player and read it from there.

The NPR Android News app has an example of a proxy inserted to allow pre-2.2 devices to properly handle Shoutcast streams. See the StreamProxy class in the source code for how this is done and lines 410-418 (as of last update) of the PlaybackService class for an implementation of that. It essentially just changed the URL to run through the local proxy server:

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);
}

If your stream comes from a local file, not the Internet, then you could do something like the HttpRawResourceServer that I wrote as a test harness to interface to the media player.


Well I think Android does not support .AAC format.

 3GPP (.3gp) and MPEG-4 (.mp4, .m4a). No support for raw AAC (.aac)

but you could change the file playerdriver.cpp inside the Android OpenCORE the following line::

mDataSource->SetDataSourceFormatType(PVMF_FORMAT_UNKNOWN); 

to

mDataSource->SetDataSourceFormatType(PVMF_AACFF); 

then you could play your AAC file =)

0

精彩评论

暂无评论...
验证码 换一张
取 消