我需要能够在 Android 中播放加密文件。
该文件是 AAC。
我能看到的唯一方法是:
- 将文件解密到内部私人存储并将播放器指向该文件进行播放,或
- 将文件解密并解码为 pcm 并将其提供给 AudioTrack。
1 不是很好,因为这样做需要很长时间。
2 也不是很好,因为我不知道如何利用硬件解码器来做到这一点。
有任何想法吗?
蒂亚。
我需要能够在 Android 中播放加密文件。
该文件是 AAC。
我能看到的唯一方法是:
1 不是很好,因为这样做需要很长时间。
2 也不是很好,因为我不知道如何利用硬件解码器来做到这一点。
有任何想法吗?
蒂亚。
如果您有可以在流上解密的加密格式,那么您可以在流源和媒体播放器之间插入一个代理并从那里读取它。
NPR Android 新闻应用程序插入了一个代理示例,以允许 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);
}
如果您的流来自本地文件,而不是 Internet,那么您可以执行类似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 文件 =)