我想知道默认媒体播放器是如何工作的。比如它如何扫描 sd 卡中的所有歌曲,如何显示它们,所以整体上使用默认媒体播放器。
我想要此信息,以便我可以将其与我的自定义媒体播放器进行比较,并检查我的媒体播放器与默认播放器相比的运行速度。我尝试搜索互联网,但无法找到与此相关的一些相关信息。
2 回答
您的问题的视角非常广泛,因此,我将向您推荐相应的路径以了解整个系统。
一是整体处理media files
从Gallery
应用开始。虽然不是入口点,ImageCacheRequest
但可能是开始研究的一个很好的参考点,它显示了如何读取缓存的图像并将其渲染到屏幕上。
接下来,要了解此缩略图是如何生成的,您必须参考ThumbnailManager.java
从 调用哪个camera
等mms
。
Thumbnail
类内部使用MediaMetadataRetriever
哪个是检索缩略图数据的主要类。
MediaMetadataRetriever
有一个相应的实现,如此处JNI
所示。感兴趣的主要功能是.getFrameAtTime
最常见的实现是StagefrightMetadataRetriever
,它的工作原理很简单。首先,MediaExtractor
创建一个解析器,它将嗅出媒体文件类型并创建一个相应的解析器实体,如下所示。接下来,解析器将调用编解码器以在请求的时间戳处解码相应的关键帧extractVideoFramewithFlags
,并返回图像,如 中所示。
在这个函数内部,一个编解码器被创建,帧被解码,颜色转换并返回给调用者,调用者将把它传送给更高的应用程序。
简而言之,我感觉你的播放器不会出现,只要在系统中注册了相应的解析器和编解码器,就会生成缩略图。
我想知道默认媒体播放器的工作原理
有数十种“默认媒体播放器”应用程序,因为不同的 Android 设备附带不同的“媒体播放器”应用程序,通常由其设备制造商编写。
欢迎您查看AOSP Music 应用程序的实现,您可能还可以查看其他开源媒体播放器。