Android实现流播放视频控件,实现秒播,显示网速和加载进度

1、相信很多从事Android开发的朋友们肯定遇到过需要播放视频的功能,但是呢,Android自带的播放器VideoView大家忍不住想骂娘的感觉,那播放的速度,是在让人恶心,跟乌龟走路一样,慢死,但是网上也有很多朋友分享各种视频播放的控件,也有不错的,单大多是播放url地址的,对于服务器如果以流的形式来的话,感觉也会有些慢,不过也还过的去,我就遇到过,集成别人的,自己测试发现播放速度还行,结果到客户那里,人就手机半天播放不出来,人家不管,就说你这不行,怎么办呢?改吧。。。苦逼的日志,

2、经过我苦苦的寻找,终于找到一个不错的播放器,叫 Vitamio,也有很多小伙伴用过或者了解过,经过我一天的集成,终于在oppo手机上成功播放的流视频,这个Vitamio功能还是很强大的,但是呢,我在小米手机上测试,github官网上下载的demo居然不行,报错,闪退。怎么办呢?瞎捣鼓了近一天,也没搞出来怎么回事,放弃了!最后四处询问,终于找到一款不错的流播放器叫:PLVideoView ,下面详细介绍一下如果使用的!当然小伙伴们还可以去官网看文档。

地址为:<a> https://developer.qiniu.com/pili/sdk/1210/the-android-client-sdk </a>

3、七牛云直播: 它是一款专门用于直播的播放器,直播的话,肯定是流视频,这点也不是很懂,不细说了,这里是sdk的下载地址:https://github.com/pili-engineering/PLDroidPlayer/releases

这是官网的demo:https://github.com/pili-engineering/PLDroidPlayer

4、它的特性:

  • [x] Android Min API 9
  • [x] 支持 RTMP 和 HLS 协议的直播流媒体播放
  • [x] 支持常见的音视频文件播放(MP4、mp3、flv 等)
  • [x] 支持 MediaCodec 硬件解码
  • [x] 提供播放器核心类 PLMediaPlayer
  • [x] 提供 PLVideoView 控件
  • [x] 提供 PLVideoTextureView 控件
  • [x] 支持多种画面预览模式
  • [x] 支持画面旋转(0度,90度,180度,270度)
  • [x] 支持画面镜像变换
  • [x] 支持播放器音量设置,可实现静音功能
  • [x] 支持纯音频播放
  • [x] 支持后台播放
  • [x] 支持首屏秒开
  • [x] 支持直播累积延时优化
  • [x] 支持带 IP 地址的播放 URL
  • [x] 支持设置封面
  • [x] 支持软硬解自动切换
  • [x] 支持 HTTPS 协议
  • [x] 支持自动重连
  • [x] 支持 H.265 播放
  • [x] 支持七牛私有 DRM
  • [x] 支持 mp4 本地缓存
  • [x] 支持音视频数据回调
  • [x] 支持自定义音视频渲染
  • [x] 新增倍数播放功能(0.5x,1x,2x,4x 等)
  • [x] 可高度定制化的 MediaController
  • [x] 支持 ARM, ARMv7a, ARM64v8a, X86 主流芯片体系架构
5、 设备以及系统要求

  • 系统要求:Android 2.3 (API 9) 及其以

6、混淆

为了保证正常使用 SDK ,请在 proguard-rules.pro 文件中添加以下代码:

  1. -keep classcom.pili.pldroid.player.** { *; }
  2. -keep classcom.qiniu.qplayer.mediaEngine.MediaPlayer{*;}


7、导入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 工程,集成后的工程示例如下:



8、修改 build.gradle

双击打开您的工程目录下的 build.gradle,确保已经添加了如下依赖,如下所示:

 
拷贝
  1. <com.pili.pldroid.player.widget.PLVideoTextureView
  2. android:id= "@+id/PLVideoTextureView"
  3. android:layout_width= "match_parent"
  4. android:layout_height= "match_parent"
  5. android:layout_gravity= "center" />
初始化:

如果采用 PLVideoView 的话,初始化的方法如下:

PLVideoView mVideoView = (PLVideoView) findViewById(R.id.PLVideView);

如果采用 PLVideoTextureView 的话,初始化的方法如下:

PLVideoTextureView mVideoView = (PLVideoTextureView) findViewById(R.id.PLVideoTextureView);

关联播放控制器

Demo 里面提供了一个播放控制器示例,MediaController,您可以随意修改满足定制化需求,将该控制器控件关联到 PLVideoView 或者 PLVideoTextureView的方法如下:

  1. MediaController mMediaController = new MediaController( this);
  2. mVideoView.setMediaController(mMediaController);

设置加载动画

PLVideoView 和 PLVideoTextureView 提供了设置加载动画的接口,在播放器进入缓冲状态时,自动显示加载界面,缓冲结束后,自动隐藏加载界面,设置方法如下:

 
拷贝
  1. View loadingView = findViewById(R.id.LoadingView);
  2. mVideoView.setBufferingIndicator(loadingView);
该  loadingView  可以是任意的 Android View 视图对象。

设置播放状态监听器

PLVideoView 和 PLVideoTextureView 都提供了丰富的播放状态消息回调,您可以通过 setXXXListener 接口实现各种消息状态的获取,示例如下:

 
拷贝
  1. mVideoView .start();
  2. mVideoView .pause();
  3. mVideoView .stopPlayback();

基本上集成指南就这些,这里只介绍一个,还有另一个PLMediaPlayer 

大家可以自己去看文档,这里有的介绍的不是很清楚的话请见谅,可以去这个地址看官网文档,我就是自己看的文档集成的!然后下载的demo看着demo中代码修改的!

地址:<a> https://developer.qiniu.com/pili/sdk/1210/the-android-client-sdk </a>

好了,今天就到这里了,希望对大家有所帮助!



 
<button title="" class="btn copybtn" data-toggle="tooltip" data-placement="top" container="body" data-original-title="拷贝代码" data-clipboard-text="" <com.pili.pldroid.player.widget.plvideoview"="" style="margin: 0px; font-style: inherit; font-variant: inherit; font-stretch: inherit; font-size: 12px; line-height: 1.42857; font-family: inherit; color: rgb(118, 118, 118); overflow: visible; cursor: pointer; padding: 5px 8px; white-space: nowrap; vertical-align: middle; touch-action: manipulation; user-select: none; background-image: none; border-width: 1px; border-style: solid; border-color: rgb(225, 225, 232); border-radius: 0px 4px; position: absolute; background-color: rgb(255, 255, 255); right: -2px; top: -1px;">
  • 3
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Android中,您可以使用`ImageView`控件显示图片,使用`VideoView`控件播放视频。以下是一个简单的示例,演示如何在Android应用程序中播放视频显示图片: 1. 显示图片 a. 在布局文件中添加一个ImageView控件: ```xml <ImageView android:id="@+id/imageView" android:layout_width="match_parent" android:layout_height="match_parent" /> ``` b. 在Java代码中,使用以下方法将图像设置为ImageView控件: ```java ImageView imageView = (ImageView) findViewById(R.id.imageView); imageView.setImageResource(R.drawable.my_image); ``` 其中,`my_image`是您应用程序中的图像资源ID。 2. 播放视频 a. 在布局文件中添加一个VideoView控件: ```xml <VideoView android:id="@+id/videoView" android:layout_width="match_parent" android:layout_height="match_parent" /> ``` b. 在Java代码中,使用以下方法将视频设置为VideoView控件: ```java VideoView videoView = (VideoView) findViewById(R.id.videoView); Uri uri = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.my_video); videoView.setVideoURI(uri); videoView.start(); ``` 其中,`my_video`是您应用程序中的视频资源ID。 请注意,您需要将视频文件放在`res/raw/`文件夹中,才能通过`R.raw.my_video`引用它。同时,您还需要为应用程序添加`INTERNET`权限,以便从网络上播放视频。 ### 回答2: 要实现Android上播放图片和视频,可以使用多种方法。以下是一种常见的方式。 首先,为了播放视频,我们可以使用VideoView控件VideoView是一个能够在Android界面上播放视频的视图组件。我们可以在布局文件中添加VideoView,并在Java代码中通过findViewById()方法来获取该组件的实例。 然后,通过setVideoPath()方法或setVideoURI()方法,将视频文件的路径或URI设置给VideoView。最后,调用start()方法来开始播放视频。如果要实现控制视频的暂停、停止、前进等功能,可以使用VideoView提供的相关方法。 对于播放图片,可以使用ImageView控件。ImageView是一个常用的视图组件,用于显示图片。同样地,在布局文件中添加ImageView,并通过findViewById()方法获取其实例。然后,使用setImageResource()方法或setImageURI()方法,将图片资源或URI设置给ImageView即可。如果要实现图片的缩放、剪裁等操作,可以使用ImageView的相关方法。 除了VideoView和ImageView,还可以使用其他开源的第三方库或框架来实现更丰富的图片和视频播放功能。例如,使用Glide、Picasso等图像加载库可以更方便地管理和展示图片。如果需要更多的视频播放控制功能,可以使用ExoPlayer、Vitamio等强大的播放器库。 总结来说,实现Android上的图片和视频播放可以通过VideoView和ImageView控件来完成,也可以使用第三方库来增强功能。 ### 回答3: 要在Android实现图片和视频播放,可以通过使用Android的多媒体框架和相关的类来实现。 对于图片播放,可以使用ImageView类来显示图片。首先,将所需的图片资源放置在项目的资源文件夹中。然后,在布局文件中添加一个ImageView组件,并在相应的Java代码中使用findViewById方法来获取到ImageView的实例。接下来,使用setImageResource或setImageURI方法将图片资源设置给ImageView,即可实现图片的显示和播放。 对于视频播放,可以使用VideoView类来播放视频。首先,将所需的视频文件放置在项目的资源文件夹中。然后,在布局文件中添加一个VideoView组件,并在相应的Java代码中使用findViewById方法来获取到VideoView的实例。接下来,使用setVideoPath或setVideoURI方法将视频文件的路径或URI设置给VideoView,并调用start方法来开始播放视频。 为了获得更好的用户体验,还可以通过使用其他相关类来增加额外的功能。例如,使用MediaPlayer类来控制音频的播放,并使用MediaController类来提供视频播放时的控制UI。 总之,要实现Android上的图片和视频播放,可以使用ImageView和VideoView等类来完成基本的播放功能,并根据需要使用其他相关类来增加额外的功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值