android 播放器sdk,Android端SDK的使用

简单播放示例

1.新建播放器:

播放器SDK核心类是JDCloudPlayer,提供的核心view是JDCloudVideoView,JDCloudVideoView可以实现播放器开始、暂停、重播、seek等功能,能满足基础的播放器功能。也可以利用JDCloudPlayer自己实现view。创建代码如下:

复制成功JDCloudVideoView mJDCloudVideoView =new JDCloudVideoView(context);2.设置监听:

播放器准备完毕的监听:

复制成功mJDCloudVideoView.setOnPreparedListener(new IMediaPlayer.OnPreparedListener() {

@Override

public void onPrepared(IMediaPlayer iMediaPlayer) {

//do something

}});视频播放完成的监听:

复制成功mJDCloudVideoView. setOnCompletionListener (new IMediaPlayer. OnCompletionListener () {

@Override

public void onCompletion (IMediaPlayer iMediaPlayer) {

// 播放完成,可释放播放器

if(mJDCloudVideoView!= null) {

mJDCloudVideoView.pause ();

mJDCloudVideoView.release(false);

}

}});收集信息的监听:

复制成功mJDCloudVideoView.setOnInfoListener(new IMediaPlayer.OnInfoListener(){

@Override

Public Boolean onInfo(IMediaPlayer iMediaPlayer,int i,int infoIndex){

//i为消息类型,保存在IMediaPlayer类以MEDIA_INFO开头的常量中

return true;

}})出现错误的监听:

复制成功mJDCloudVideoView.setOnErrorListener(new IMediaPlayer.OnErrorListener(){

@Override

public boolean onError(IMediaPlayer iMediaPlayer,int i,int errorIndex) {

//i为消息类型,保存在IMediaPlayer类以MEDIA_ERROR开头的常量中

return true;

}});3.设置播放地址播放视频,支持RMVB、AVI、MKV、MP4、MOV等格式。

复制成功mJDCloudVideoView.setVideoPath(videoUrl);

mJDCloudVideoView.start();//首次播放

jdcVideoView.switchDataSource(videoURL);//调用start启动播放后,切换视频。4.暂停播放,暂停后可以用start()再次播放。

复制成功if(mJDCloudVideoView!=null) mJDCloudVideoView.pause();5.结束播放,和暂停播放不同,会清除播放地址。

复制成功mJDCloudVideoView.stopPlayback();6.播放完成后,可以释放播放器

复制成功if (mJDCloudVideoView!= null) {

mJDCloudVideoView.release(false);

mJDCloudVideoView = null;

}## 更多接口

播放器的各种控制

播放器的控制接口,基本控制功能有播放、暂停、恢复播放、Seek。其中Seek功能对直播失效。

复制成功//暂停播放

mJDCloudVideoView.pause();

//启动播放、暂停后恢复播放

mJDCloudVideoView.start();

//跳转到指定时间点的视频画面,单位为秒

mJDCloudVideoView.seekTo(position);* **缩放模式**

视频画面的显示模式,如裁剪、填充、全屏等效果;通过setScalingMode来设置播放模式,播放前或者播放中设置均生效。

三种播放模式如下:

IRenderView.SCALING_MODE_ASPECT_FIT

填充:在保证视频画面全部展示的提前下,将视频的中心对准mJDCloudVideoView的中心,等比例放大或缩小视频画面,直到视频的宽高完全匹配mJDCloudVideoView 的宽高为止。

和ImageView的scaleType属性的值为fitCenter效果相同。

IRenderView.SCALING_MODE_ASPECT_FILL

剪裁:以填满整个mJDCloudVideoView为目的,将视频的中心对准mJDCloudVideoView的中心,等比例放大原图,直到填满mJDCloudVideoView为止(指的是mJDCloudVideoView的宽和高都要填满),视频超过mJDCloudVideoView的部分作裁剪处理。

和ImageView的scaleType属性的值为centerCrop效果相同。

IRenderView.SCALING_MODE_MATCH_PARENT

全屏:视频画面宽高完全匹配mJDCloudVideoView设置的区域,画面可能被拉伸

倍速播放

在播放器创建之后,可设置倍速,播放中也可以设置,直播的视频不可设置,倍速播放支持0.5~2倍的设置。

复制成功mJDCloudVideoView.setSpeed(speedLevel);* **获取播放进度和时间**

播放器中显示的当前时间和播放的总时长,在准备播放成功后,可以获取。

示例代码:

复制成功//获取当前播放时间,单位:毫秒

int mPosition=mJDCloudVideoView.getCurrentPosition()

//总时长,单位:毫秒

int mDuration=mJDCloudVideoView.getDuration()* **镜像播放**

镜像功能可使播放的画面左右镜像翻转,示例代码:

复制成功mJDCloudVideoView.setMirror(true);* **后台播放**

开启后台播放后,当用户点击home按钮后,播放器进入后台继续读取数据并播放音频。当APP回到前台后,音频继续播放。

复制成功mJDCloudVideoView.enterBackground();* **纯音频播放**

设置播放过程中有无画面输出,设置该属性后,底层不再进行视频的渲染动作。播放前后均可设置。

复制成功mJDCloudVideoView.setVisibility(View.INVISIBLE)* **播放中截图**

获取播放视频当前时间点的图片:

复制成功Bitmap bmp=mJDCloudVideoView.takeSnapShot()* **截gif小视频**

JDCloudVideoTool工具类封装了截取gif动图所需的方法,

getSnapShotSequence():获取指定视频指定时间段内的图片序列,

recordVideo():录制视频的指定时间段内的视频,

recordGif():根据视频和指定时间段,生成gif动图,

注:指定时间段需要在视频总时长内。

这三个方法均是静态方法,详细参数参考sdk说明文档。

边播边缓存功能

边播边下缓存功能是在视频被成功播放后,文件会缓存到本地,再次播放视频时会直接使用本地缓存文件,不再请求网络

新建缓存:

JDCloudVideoCache cache=new JDCloudVideoCache(cachePath);

整个APP周期,缓存只能新建一次,可以采用单例模式。

JDCloudVideoCache cache=DemoApplication.getCache(mContext);

播放视频时,在cache中获取播放地址:

String proxyUrl = cache.getProxyUrl(videoURL);

mJDCloudVideoView.setVideoPath(proxyUrl);

日志

播放过程中状态发生改变,获取不同播放状态和播放信息作为日志。设置IMediaPlayer.OnInfoListener监听可以获取各种类型的消息,设置方式如下:

mJDCloudVideoView.setOnInfoListener();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
作者wanliyang1990,源码wlmedia,1、UsageGradle: implementation 'ywl.ywl5320:wlmedia:1.0.0-beta17'2、实例图片播放视频播放 byte[](如:标准的 h264 h265 等)播放音乐竖屏播放(自动保持宽高比)横屏播放(自动保持宽高比)3、调用方式配置 NDK 编译平台:defaultConfig {     ...     ndk {         abiFilter("arm64-v8a")         abiFilter("armeabi-v7a")         abiFilter("x86")         abiFilter("x86_64")     }     ... }基本权限接入代码(SDK API level:28)// WlSurfaceView 一般播放使用// WlTextureView 需要做透明、移动、旋转等使用WlMedia wlMedia = new WlMedia();// 可支持多实例播放(主要对于音频,视频实际验证效果不佳) wlMedia.setPlayModel(WlPlayModel.PLAYMODEL_AUDIO_VIDEO);//声音视频都播放 wlMedia.setCodecType(WlCodecType.CODEC_MEDIACODEC);//优先使用硬解码 wlMedia.setMute(WlMute.MUTE_CENTER);//立体声 wlMedia.setVolume(80);//80%音量 wlMedia.setPlayPitch(1.0f);//正常速度 wlMedia.setPlaySpeed(1.0f);//正常音调 wlMedia.setRtspTimeOut(30);//网络流超时时间 wlMedia.setShowPcmData(true);//回调返回音频 pcm 数据 wlMedia.setSampleRate(WlSampleRate.RATE_44100);//设置音频采样率为指定值(返回的 PCM 就是这个采样率) wlSurfaceView.setWlMedia(wlMedia);//给视频 surface 设置播放器 //异步准备完成后开始播放 wlMedia.setOnPreparedListener(new WlOnPreparedListener() {         @Override         public void onPrepared() {         // wlMedia.setVideoScale(WlScaleType.SCALE_16_9);//设置 16:9 的视频比例             wlMedia.start();//开始播放             double duration = wlMedia.getDuration();//获取时长         }     }); //设置 url 源 wlMedia.setSource("/storage/sdcard1/精灵宝可梦:就决定是你了.720p.国日粤三语.BD 中字[最新电影 www.66ys.tv].mp4"); wlMedia.prepared();//异步准备
在UniApp中使用高德地图SDK可以通过以下步骤实现: 1. 在UniApp项目的根目录下找到`manifest.json`文件,打开并添加以下代码到`uni-app`节点下: ```json "": { "android": { "features": [ { "name": "android.hardware.location", "required": true } ] } } ``` 这样可以添加定位权限,使得应用可以获取用户位置信息。 2. 下载高德地图SDK的AAR包,将其放置在UniApp项目的`unpackage/libs/android`目录下。 3. 在`manifest.json`文件中的`app-plus`节点下添加以下代码: ```json "app-plus": { "usingComponents": { "map": "@myplugin/map" // 自定义插件名 }, "android": { "permission": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "package": [ "libs/android/your_amap_sdk.aar" // 替换为你下载的高德地图SDK AAR包路径 ] } } ``` 其中的`@myplugin/map`是自定义的插件名,可以根据自己的需要进行修改。`your_amap_sdk.aar`需要替换为你下载的高德地图SDK AAR包的路径。 4. 在需要使用高德地图的页面中,引入高德地图组件,例如: ```html <template> <view> <view class="map-container"> <map :longitude="longitude" :latitude="latitude" :markers="markers"></map> </view> </view> </template> <script> export default { data() { return { longitude: 0, latitude: 0, markers: [] }; }, methods: { getLocation() { // 获取用户位置信息 uni.getLocation({ type: 'gcj02', success: (res) => { this.longitude = res.longitude; this.latitude = res.latitude; this.markers = [{ id: '1', longitude: res.longitude, latitude: res.latitude, title: '我的位置' }]; } }); } }, mounted() { this.getLocation(); } }; </script> ``` 上述代码中,引入了`map`组件,并通过定位API获取用户的地理位置信息,并在地图上显示。 5. 运行项目,即可在Android使用高德地图SDK。 以上就是在UniApp Android使用高德地图SDK的简单步骤。请确保已经下载并配置了高德地图SDK,并在真机或模拟器上进行测试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值