本文主要是介绍android 播放raw,[Android多媒体技术] 播放Raw/Assets音视频方法总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前言
本文介绍如何通过系统MediaPlayer,IjkPlayer,ExoPlayer分别播放安卓项目下的Raw或Assets文件夹中的音视频文件。
在某些情况下,我们会把一些音视频文件,如Mp3,Mp4等,直接放在安装包中的Raw或者Assets文件夹里,这些音视频文件可能作为特定场景的提示音,或者视频片头等等。关于Raw和Assets资源文件,这里不作过多讨论,总的来讲,他们都是被打包进APK中的文件,不会被编译成二进制,程序可以直接访问,无需额外的权限。
先说明一下本文代码的构建环境和使用的播放内核版本:
Java 1.7
Android Studio 3.1.2
Gradle 4.4
IjkPlayer 0.8.8
ExoPlayer 2.8.3
效果演示
Raw/Assets资源文件访问方式
在项目文件夹中的位置:
Raw文件访问方式
Raw文件位于res/raw目录下,Raw文件会被映射到R.java文件中,所以访问的时候直接使用资源ID即可,如
R.raw.raw_video
或者获得该文件的AssetFileDescriptor:
AssetFileDescriptor afd = getResources().openRawResourceFd(R.raw.raw_video);
Assets文件访问方式
Assets文件夹下的文件不会被映射到R.java中,访问的时候需要AssetManager类。
AssetManager am = getAssets();
try {
AssetFileDescriptor afd= am.openFd(fileName);
} catch (IOException e) {
e.printStackTrace();
}
AssetFileDescriptor可以理解成访问Raw/Assets文件的一个入口,或者说是一把钥匙。
Raw/Assets文件还有其他的访问方式,比如通过ContentResolver,又或者直接开启一个InputStream去读取文件,这应该是播放器内核需要做的事情,我们只需要给播放器提供以上的信息即可。
·········································································································
下面直接上代码
通过系统MediaPlayer播放音视频
Raw文件
//实例化播放内核
android.media.MediaPlayer mediaPlayer = new android.media.MediaPlayer();
//获得播放源访问入口
AssetFileDescriptor afd = getResources().openRawResourceFd(R.raw.raw_video); // 注意这里的区别
//给MediaPlayer设置播放源
mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.ge
这篇关于android 播放raw,[Android多媒体技术] 播放Raw/Assets音视频方法总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!