如何在Android中播放加密文件

时间:2010-04-14 18:17:18

标签: android encryption media-player

我需要能够在Android中播放加密文件。

该文件是AAC。

我能看到的唯一方法是:

  1. 将文件解密为内部私有存储,并将播放器指向该文件以进行播放,或
  2. 解密&将文件解码为pcm并将其提供给AudioTrack。
  3. 1并不是很好,因为这需要很长时间才能做到这一点 2也不是很好,因为我不知道如何利用HW解码器来做到这一点。

    有什么想法吗?

    TIA。

2 个答案:

答案 0 :(得分:4)

如果您的加密格式可以在流上解密,那么您可以在流源和媒体播放器之间插入代理并从那里读取它。

NPR Android News应用程序有一个插入代理的示例,允许2.2版之前的设备正确处理Shoutcast流。请参阅源代码中的StreamProxy class以了解具体方法,并lines 410-418 (as of last update) of the PlaybackService class了解其实施情况。它基本上只是将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之类的测试工具来与媒体播放器进行交互。

答案 1 :(得分:0)

我认为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文件=)