Android MediaPlayer在何处/如何缓存渐进式下载

Android MediaPlayer在何处/如何缓存渐进式下载,android,media-player,progressive-download,Android,Media Player,Progressive Download,我需要知道默认情况下,当音频/视频内容通过渐进式下载“流式传输”时,MediaPlayer在何处/如何缓存音频/视频内容 我们正在评估Android媒体播放器应用程序的选项。一个问题是防止复制内容(尽可能)。渐进式下载有很多好处,但我们需要确保采取合理措施保护媒体。我一定是在错误的地方做了错误的搜索,因为我还没有找到关于这个的任何细节。我已经搜索了我们测试设备的文件系统,试图从我们的测试渐进式下载应用程序中找到任何缓存文件,但没有结果(这对我们来说可能是好的)。在Android中,MediaPl

我需要知道默认情况下,当音频/视频内容通过渐进式下载“流式传输”时,MediaPlayer在何处/如何缓存音频/视频内容


我们正在评估Android媒体播放器应用程序的选项。一个问题是防止复制内容(尽可能)。渐进式下载有很多好处,但我们需要确保采取合理措施保护媒体。我一定是在错误的地方做了错误的搜索,因为我还没有找到关于这个的任何细节。我已经搜索了我们测试设备的文件系统,试图从我们的测试渐进式下载应用程序中找到任何缓存文件,但没有结果(这对我们来说可能是好的)。

在Android中,
MediaPlayer
是一个顶级类,它抽象了底层的播放器引擎。在
MediaPlayer
中,整个处理过程分为以下三个主要部分:

MediaTrack ==> OMXCodec / ACodec ==> Sink
其中,
MediaTrack
是一个特定于曲目的实现,它基于作为解析器引擎的
MediaExtractor

MediaExtractor
由一个提取输入源的
DataSource
初始化。对于渐进式下载,
DataSource
的实现将是主要重点,因为这将为下游组件提供缓冲区。由于Android平台使用的是pull模型,
DataSource
将控制提供数据的速率


在AOSP中,您可以参考中的示例实现。有关
HTTPSource
实现的更多信息,请访问

,非常感谢您的回答。这无疑为我指明了一些有益的方向。我在调试器中浏览了MediaPlayer代码,试图深入了解数据源实现。不幸的是,当MediaPlayer最终从JNI调用的本机版本时,我遇到了一个死胡同,即
android\u media\u MediaPlayer
,调用通常在
MediaPlayer.cpp
中进行。从
MediaPlayer.cpp
,对
player->setDataSource
的调用通常由播放器引擎实现,该引擎可以是
StagefrightPlayer
NuPlayer
。在流媒体播放的情况下,呼叫将由
numplayer
处理。再次感谢。不幸的是,我还没有找到任何关于NuPlayer或StagefrightPlayer的文档。如果我有时间建立一个linux开发平台并梳理ASOP代码,我会的。但不幸的是,我没有。我在一部干净的手机上安装了一个简单的媒体应用程序,通过渐进式下载播放mp3,然后通过DDMS对文件系统进行了彻底的搜索。我找不到可识别或可检索的音频副本。这让我得出结论,播放器要么缓存在内存中,要么以某种严重混乱的方式缓存到文件系统。这可能已经足够了。我可以通过日志确认AwesomePlayer正在使用。Awesomeplayer似乎使用NuCachedSource2作为其缓存。快速浏览一下就可以确认它使用的是页面缓存系统。谢谢甘尼什引导我朝这个方向前进。@ChuckSpencer谢谢你的确认。为了补充我之前的评论,我在设置
RTSP
流媒体时观察了
NuPlayer
。然而,对于
https
流媒体,我可以观察到与您提到的类似的路径。