我需要能够在Android中播放加密文件。如何在Android中播放加密文件
该文件是AAC。
我可以看到这样做的唯一方法可以是:
- 解密文件导入到内部专用存储,并在该文件播放点播放器,或
- 解密&解码文件为PCM并将其提供给AudioTrack。
1不是很好,因为它需要很长时间才能做到。
2不是很好,因为我不知道如何利用硬件解码器来做到这一点。
任何想法?
tia。
我需要能够在Android中播放加密文件。如何在Android中播放加密文件
该文件是AAC。
我可以看到这样做的唯一方法可以是:
1不是很好,因为它需要很长时间才能做到。
2不是很好,因为我不知道如何利用硬件解码器来做到这一点。
任何想法?
tia。
嗯,我认为Android不支持.AAC格式。
3GPP (.3gp) and MPEG-4 (.mp4, .m4a). No support for raw AAC (.aac)
,但你可以改变文件 playerdriver.cpp了Android的OpenCore内以下行::
mDataSource->SetDataSourceFormatType(PVMF_FORMAT_UNKNOWN);
到
mDataSource->SetDataSourceFormatType(PVMF_AACFF);
,那么你可以发挥你的AAC文件=)
如果您有一种可以在流上解密的加密格式,那么你可以在流源和媒体播放器之间插入一个代理并从那里读取它。
NPR Android新闻应用程序有一个插入代理示例,允许2.2之前的设备正确处理Shoutcast流。请参阅源代码中的StreamProxy class以了解如何完成此操作,请参阅lines 410-418 (as of last update) of the PlaybackService class以实现该操作。它本质上只是改变通过本地代理服务器来运行的网址:
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固件。 – CommonsWare 2010-04-14 20:51:49
对不起,我的意思是一个.M4A文件,问题是没有播放未加密的版本,问题是播放加密版本。我需要媒体播放器采用InputStream。 – user306517 2010-04-14 21:41:11
创建您自己的Android固件 - ug。当真?有一种方法可以做到这一点...怎么样将文件重新加密成android系统知道的本地DRM? DRM基本上是出于Android还是什么?似乎是一个非常严重的限制... – user306517 2010-04-15 00:28:22