
为了确保正常使用 SDK ,请在 proguard-rules.pro 文件中添加以上代码:
-keep class com.pili.pldroid.player.** { *; }
-keep class com.qiniu.qplayer.mediaEngine.MediaPlayer{*;}
首先,下载最新版本的 PLDroidPlayer SDK
SDK 主要包括 demo 代码、 PLDroidPlayer jar 包,还有 sdk 依赖的动态库文件。
将 SDK 文件导出您的工期:

PLDroidPlayer SDK 支持 armv5、armv7、arm64 和 x86 多种 CPU 架构,当前市场上主流型号的 CPU 都采用的是 armv7 架构。您可以按照兼容性的才能,将 release 目录下的动态库,拷贝到您的工期对应的目录下,例如:armeabi-v7a 目录下的 so 则拷贝到工程的 jniLibs/armeabi-v7a 目录下。
因为 Android 7.0 使用 BoringSSL 替换了 OpenSSL,一些依赖功能内建 OpenSSL 的流程在一些 7.0+ 的 ROM 里可能会崩溃。如果您的使用 targetSdkVersion >= 24,所以强烈推荐将 libopenssl.so 加入至 jniLibs 目录。
同样,还需要将 pldroid-player-x.x.x.jar 包也拷贝到工程的 libs 目录下,具体可以参考 SDK 包含的 demo 工程,集成后的工期实例如下:

双击打开您的工期目录下的 build.gradle,保证已经添加了如下依赖,如下所示:
dependencies {
compile files('libs/pldroid-player-x.x.x.jar')
}
在 app/src/main 目录中的 AndroidManifest.xml 中提高如下 uses-permission 声明
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
PLDroidPlayer SDK 提供的 PLVideoView 类和 PLVideoTextureView 类可以快速实现带图标的播放器功能,这些的插口与 Android 官方的 VideoView 类基本维持一致,其外部封装了 PLMediaPlayer 类所提供的播映系统。
你们的应用方式基本相似,惟一的差异在于 PLVideoView 类使用了 SurfaceView 来完成视频镜头的渲染,而 PLVideoTextureView 采用了 TextureView 完成视频镜头的渲染 ,所以,在这里合并在一起来介绍。
因为采用 PLVideoView 的话,布局如下:
<com.pili.pldroid.player.widget.PLVideoView
android:id="@+id/PLVideoView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center" />
因为采用 PLVideoTextureView 的话,布局如下:
<com.pili.pldroid.player.widget.PLVideoTextureView
android:id="@+id/PLVideoTextureView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center" />
因为采用 PLVideoView 的话,初始化的方式如下:
PLVideoView mVideoView = (PLVideoView) findViewById(R.id.PLVideView);
因为采用 PLVideoTextureView 的话,初始化的方式如下:
PLVideoTextureView mVideoView = (PLVideoTextureView) findViewById(R.id.PLVideoTextureView);
Demo 里面提供了一个播放控制器示例,MediaController,您可以随意修改满足多样化需求,将该控制器控件关联到 PLVideoView 或者 PLVideoTextureView 的方式如下:
MediaController mMediaController = new MediaController(this);
mVideoView.setMediaController(mMediaController);
PLVideoView 和 PLVideoTextureView 提供了设置加载的插口,在播放器进入缓冲状态时,自动显示加载页面,缓冲结束后,自动隐藏加载页面七牛云开发者中心,增设方式如下:
View loadingView = findViewById(R.id.LoadingView);
mVideoView.setBufferingIndicator(loadingView);
该 loadingView 可以是任意的 Android View 视图对象。
PLVideoView 和 PLVideoTextureView 都提供了多样的播映状态消息回调,您可以借助 setXXXListener 接口实现这些传闻状态的获取,实例如下:

public class PLVideoViewActivity extends Activity implements
PLPreparedListener,
PLOnInfoListener,
PLOnCompletionListener,
PLOnVideoSizeChangedListener,
PLOnErrorListener {
...
mVideoView.setOnPreparedListener(this);
mVideoView.setOnInfoListener(this);
mVideoView.setOnCompletionListener(this);
mVideoView.setOnVideoSizeChangedListener(this);
mVideoView.setOnErrorListener(this);
...
关于各个传闻状态的具体含义,将在 章节详细说明。
PLVideoView 和 PLVideTextureView 提供了这些场景预览模式,包含:原始尺寸、适应屏幕、分屏铺满、16:9、4:3 等,增设方式如下:
mVideoView.setDisplayAspectRatio(PLVideoView.ASPECT_RATIO_ORIGIN);
mVideoView.setDisplayAspectRatio(PLVideoView.ASPECT_RATIO_FIT_PARENT);
mVideoView.setDisplayAspectRatio(PLVideoView.ASPECT_RATIO_PAVED_PARENT);
mVideoView.setDisplayAspectRatio(PLVideoView.ASPECT_RATIO_16_9);
mVideoView.setDisplayAspectRatio(PLVideoView.ASPECT_RATIO_4_3);
PLVideTextureView 还支持镜头旋转,支持播放场景以 0度,90度,180度,270度旋转,增设方式如下:
mVideoView.setDisplayOrientation(90); // 旋转90度
PLVideTextureView 还支持镜头的镜像变换,增设方式如下:
mVideoView.setMirror(true);
这是最重要的环节,在读取播放器的控制接口之前,必须先设置好播放地址。
传入播放地址,可以是 /path/to/local.mp4 本地文件绝对路径,或 HLS URL,或 RTMP URL
mVideoView.setVideoPath(videoPath);
/**
* Sets video path.
*
* @param path the path of the video.
*/
public void setVideoPath(String path)
/**
* Sets video path
* @param path path of the video
* @param headers http headers
*/
public void setVideoPath(String path, Map<String, String> headers)
因为早已关联了 MediaController,可以直接通过该控件实现播放过程的控制,包含:暂停、继续、停止等,其实,您也可以借助 PLVideoView 提供的插口自行进行播放过程的控制,相关字段如下:
mVideoView.start();
mVideoView.pause();
mVideoView.stopPlayback();
一个常见的画面是多个播放器实例并排播放,PLVideoTextureView 对此情景进行了专门优化,可以通过设置 PLVideoTexureView.setSplitMode() 进行处理。目前提供 PLVideoTextureView.SPLIT_MODE_VERTICAL 与 PLVideoTextureView.SPLIT_MODE_HORIZONTAL 两种。若需要取消并排模式,则需读取 PLVideoTextureView.disableSplitMode()。
/**
* Set split mode
* @param mode the mode
* @param preferredSplitWidth preferred width, in px
* @param preferredSplitHeight preferred height, in px
*/
public void setSplitMode(int mode, int preferredSplitWidth, int preferredSplitHeight)
/**
* Disable split mode
*/
public void disableSplitMode()
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-118828-1.html
逼来了