更新时间:2021-01-27 16:09:19
网宿提供Android播放器SDK,用于嵌入到Android端应用中,支持安卓手机、安卓平板、安卓系统的电视,实现流媒体直播、点播播放。
请联系网宿技术支持申请。
fullCompile project(path: ':CNCMediaPlayerSDK', configuration: 'fullRelease')
轻量版使用:
liveCompile project(path: ':CNCMediaPlayerSDK', configuration: 'liveRelease')
<FrameLayout
android:id="@+id/video_layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@android:color/black">
<com.cnc.mediaplayer.sdk.CNCVideoViewEx android:id="@+id/video_view" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center"/>
<com.cnc.mediaplayer.sdk.controller.CNCMediaController android:id="@+id/media_controller" android:layout_width="match_parent" android:layout_height="match_parent"/>
</FrameLayout>
<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.WAKE_LOCK"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> <uses-permission android:name="android.permission.READ_LOGS" />
修改相应 Activity 的 configChanges:
android:configChanges="keyboardHidden|orientation|screenSize"
修改相应 Activity 的 screenOrientation 锁定竖屏,避免 Android 系统自带的自动翻转:
android:screenOrientation="portrait"
void requestAuth(Context context, String appId, String authKey, ValidListener listener);
理论上一个自然日内只会发起一次网络鉴权(可能较耗时),为避免在 SDK 内部发起网络 鉴权请求,建议在 app 启动时调用:
CNCMediaPlayerAuthentication.requestAuth(getApplicationContext(), mAuthAppId, mAuthKey, null);
void requestAuth(Context context, String appId, String authKey, ValidListener listener);
//首先获取配置参数,避免作用到当前播放
Bundle bundle = getArguments();
//获取播放 url
mUrl = bundle.getString(Constants.URL);
//获取配置类对象
mSDKSettings = new CNCSDKSettings();
//初始化配置
initSDKSettings(mSDKSettings, bundle);
setContentView(R.layout.activity_cnc_mediaplayer);
mCNCVideoViewEx = (CNCVideoViewEx) findViewById(R.id.video_view); mCNCMediaController = (CNCMediaController) findViewById(R.id.media_controller);
//关联 CNCVideoViewEx 和 CNCMediaController mCNCVideoViewEx.setMediaController(mCNCMediaController);
//全屏变化监听 mCNCVideoViewEx.setOnFullscreenChangeListener(mOnFullscreenChangeListener); //监听视频事件 mCNCVideoViewEx.setOnMediaEventsListener(mMediaEventsListener);
mCNCVideoViewEx.play(url);
if (mCNCMediaController != null) {
mCNCMediaController.setTitle(url); }
在初始化完成后,可根据需要对播放器进行配置,否则 SDK 将按照默认配置执行。
//设置是否允许后台播放
mSDKSettings.setEnableBackgroundPlay(bundle.getBoolean(Constants.ENABLE_BAC KGROUND_PLAY));
//设置是否后台时不解码视频以降低 cpu 消耗 mSDKSettings.setDisableDecodeVideoInBackground(bundle.getBoolean(Constants. DISABLE_DECODE_VIDEO_IN_BACKGROUND));
//设置是否使能手势控制
mSDKSettings.setUsingGestureController(bundle.getBoolean(Constants.USING_GE STURE_CONTROLLER));
//设置是否自动旋转 mSDKSettings.setAutoRotate(bundle.getBoolean(Constants.AUTO_ROTATE)); //手势控制时,设置控制亮度和音量的区域 mSDKSettings.setGestureBrightnessVolume(Constants.GESTURE_LEFT_BRIGHTNESS_R IGHT_VOLUME);
//设置是否直播
mSDKSettings.setLive(bundle.getBoolean(Constants.LIVE));
//设置是否使用延时追赶
mSDKSettings.setUsingCatchLiveDelay(bundle.getBoolean(Constants.USING_CATCH _LIVE_DELAY));
//设置是否使用硬件解码视频 mSDKSettings.setUsingMediaCodec(bundle.getBoolean(Constants.USING_MEDIACODE C));
//设置是否使用 OpenSL ES 音频加速
mSDKSettings.setUsingOpenSLES(bundle.getBoolean(Constants.USING_OPENSLES));
//设置触发延时追赶的阈值
mSDKSettings.setCatchLiveDelayTimeInMs(bundle.getInt(Constants.CATCH_LIVE_D ELAY_TIME_IN_MS));
//设置缓冲阈值,默认 0,最小 0,最大 5000 mSDKSettings.setBufferingTimeInMs(bundle.getInt(Constants.BUFFERING_TIME_IN _MS));
//传入鉴权 id
mSDKSettings.setAuthAppId(bundle.getString(Constants.AUTH_APP_ID));
//传入鉴权 key
mSDKSettings.setAuthKey(bundle.getString(Constants.AUTH_KEY));
//设置是否使用分辨率重建
mSDKSettings.setIsSuperRes(bundle.getBoolean(Constants.USING_SUPER_SR));
//设置是否 MP4 解密播放
mSDKSettings.setUsingMp4Encryption(bundle.getBoolean(Constants.USING_MP4_EN CRYPTION));
//设置是否使 hls 解密播放 mSDKSettings.setUsingHls(bundle.getBoolean(Constants.USING_HLS)); mSDKSettings.setHlsVideoId(bundle.getString(Constants.HLS_VIDEO_ID));
混淆时,注意添加以下代码:
-keep class cnc.cad.validsdk.** { *;
}
-keep class com.cnc.mediaplayer.sdk.lib.** {
*; }
-keep class tv.danmaku.ijk.media.player.** { *;
}
如果使用到 CNCMediaPlayerSDK 包,添加以下这行
-keep class com.cnc.mediaplayer.sdk.**{ *;
}
详见随 SDK 一起提供的使用说明文档和 API 接口文档。