安卓视频播放(阿里云视频点播播放器SDK+SurfaceView)

本篇文章讲述使用阿里云视频视频播放sdk中的高级播放器加上SurfaceView实现,采用id+STS方法进行视频播放。

流程:用户App获取STS凭证 -> 服务端下发STS凭证 -> 用户上传视频并获取vid -> 服务端获取STS凭证 -> 将STS凭证下发给客户端 -> 完成视频播放。

请看阿里云文档=========》》》》》》 阿里云-高级播放器Android使用说明

接下来我们来看一下安卓给我们提供的手势控制类

接口

setOnTouchListener(this);

其中定义了四种状态 NONE = 0, VOLUME = 1, BRIGHTNESS = 2, FF_REW = 3;

接下来我们来看一下我们自定义的SurfaceViewOnGestureListener继承 GestureDetectorSimpleOnGestureListener主要用到了

onDown(MotionEvent e)

onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY)两个方法

a在onDown的时候把状态设置NONE

b判断横向滑动的距离大于纵向滑动的距离,就把模式赋值为快进和后退

c在onScroll中进行状态赋值,根据滑动的距离,如果按下的点在屏幕的左半部分就吧状态设置为调节亮度BRIGHTNESS,如果在右半部分就是调节音量

d各种情况调用各自的接口方法

快进和后退,我们需要知道的就是我们滑动的距离如何与视频的长度关联起来。

那么咱们就可以把视频的总长度与屏幕的总长度相比,这样就能知道你手指滑动的距离占视频的多少了。

我们可以通过 l = duration / mySurfaceViewgetWidth();来获得这个比例,然后用当前的进度加上指滑动的距离占视频的长度就是要播放的视频位置

抬起点的x坐标与按下点的X坐标所得的距离,大于0是快进,小于零是后退。

系统的音量有很多,包括通话音量值,系统铃声值,音乐音量值,闹铃音量值,等等吧。

做一下笔记以备以后用到

视频播放我们用的是音乐音量值,同样的道理,我们需要把音量和高度进行关联,我们可以控件的高度闭上最大音量得出比例后就可以知道你滑动的距离占音量的多少了。

这里有个注意点就是activity是当前的这个界面,设置的是当前的界面,离开这个界面后就不管用了。

相同的道理和滑动调节音量一样也是获得屏幕的高度比上最大的亮度,然后计算滑动的距离转换成亮度是多少。(这里不多讲了)

为什么会出现黑屏,就是按Home键再点App回来后,只有声音没有的问题,因为我们用的是SurfaceView,每次点击Home键时会销毁这个SurfaceView,再回来时又会重新创建,这样我们的阿里云播放器与SurfaceView就没有绑定了,画面就没有了。

这样我们需要 给surfaceView添加mySurfaceViewgetHolder()addCallback(this);

我们在按home键的时候会走surfaceDestroyed。这样,我们就可以在这里做一个标识,让他暂停,然后再回来的时候就会走surfaceCreated,判断标识,然后进行处理就可以了。切记一定要重新让aliyunVodPlayer与SurfaceView进行关联,这样才能有画面也有声音。

由于我们的视频在阿里云的服务器上存着,访问阿里云的服务器需要临时凭证,我们通过STS来获取Token,但是这个Token是有时间限制,正好阿里云的播放器给我们提供了播放视频出错时候的回调接口,我们只需要在这里面进行重新请求Token就可以了

1、安装java

方式一:安装java环境:yum install java-180-openjdk -y

使用命令检查是否安装成功 java -version

到此安装结束了。这样安装有一个好处就是不需要对path进行设置,自动就设置好了。jdk安装在/usr/lib/jvm目录下

方式二:先下载对应版本到本地,然后解压缩,配置环境变量(详细步骤百度即可)

2、安装jmeter

(1)登录自己服务器,在usr/local下创建文件夹jmeter,命令mkdir jmeter

(2)通过官网下载jmeter到本地

(3)通过xhell上传到对应的目录(cd到要上传的目录)

(4)yum -y install lrzsz(安装了lrzsz,执行该命令是因为服务器有的文件不让上传。让上传就不用执行)

(5)使用 rz -y命令进行文件上传,此时会弹出上传的窗口,进行上传即可

(6)上传成功之后进行解压 unzip apache-jmeter-54zip

(7)配置环境变量vi /etc/profile

esc+shift # 键盘同时按住,退出编辑模式

:wq # 保存退出

:q # 不保存退出

添加如下内容:

# set Jmeter enviroment

export JMETER_HOME=/usr/local/jmeter/apache-jmeter-54

export PATH=${PATH}:${JMETER_HOME}/bin

(8)source /etc/profile # 使配置文件生效

(9)jmeter -version

3、安装ant

(1)在usr/local下创建文件夹ant,命令mkdir ant

(2)通过官网下载ant到本地

(3)使用 rz -y命令进行文件上传,此时会弹出上传的窗口,进行上传即可 sz 文件名(服务器文件下载到本地)

(4)上传成功之后进行解压 unzip

(5)配置环境变量vi /etc/profile

# set Ant enviroment

export ANT_HOME=/usr/local/ant/apache-ant-11010

export PATH=${PATH}:${ANT_HOME}/bin

(6)source /etc/profile # 使配置文件生效

(7)ant -version

4、ant的配置

(1)将jmeter安装包extras文件夹里ant-jemter-111jar 复制到antlib下

cp ant-jmeter-111jar /usr/local/ant/apache-ant-11010/lib

(2)进入apache-jmeter-30extras运行ant ,查看该目录下是否出现Testjtl、Testhtml文件,若有,则构建成功

5、编写Ant的buildxml文件

(1)创建Jmeter_Test目录,放在/usr/local/下

(2)Jmeter_Test目录下创建buildxml、ResultLog(html,jtl)、Script(放脚本)

(3)buildxml文件内容去https://wwwcnblogscom/L-Test/p/9736808html下复制,需要修改里边的路径

6、jenkins安装

(1)Jenkins下载地址:https://jenkinsio/download/

(2)下载的是jenkinswar

(3)在Linux下启动Jenkins有两种方式,一种是在jenkinswar的存放目录下使用命令java -jar jenkinswar启动,

另外一种是把jenkinswar放在tomcat的webapps目录下,然后启动tomcat就可以了(本次用的第一种)

(4)在浏览器中输入http://服务器ip:8080/jenkins/

如果是用的阿里云服务器,启动成功之后,在浏览器访问,无法访问。解决办法就是登陆阿里云服务器修改一下安全规则,把端口范围调大

(5)访问成功之后输入管理员密码

(6)安装推荐的插件,创建管理员用户

7、jenkins的其他配置

(1)修改为中文依赖的三个插件localization-zh-cn、locale、localization-support

jenkins插件下载地址https://blogcsdnnet/qq_39530199/article/details/90266654

(2)不知道依赖于那个插件,可以看看manage Jenkins里边的报错 plugin is missing

8、git的安装

(1)git下载地址:https://mirrorsedgekernelorg/pub/software/scm/git/

(2)usr/local下新建git目录,cd到git,安装包上传上来, tar -zxvf v2170targz

(3)安装编译源码所需依赖,命令为: yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl- ExtUtils-MakeMaker 耐心等待安装,出现提示输入y即可;

(4)安装依赖时,yum自动安装了Git,需要卸载旧版本Git,命令为: yum remove git 出现提示输入y即可;

(5)进入解压后的文件夹,命令 cd git-2170 ,然后执行编译,命令为 make prefix=/usr/local/git all 耐心等待编译即可;

(6)安装Git至/usr/local/git路径,命令为 make prefix=/usr/local/git install ;

(7)打开环境变量配置文件,命令 vim /etc/profile ,在底部加上Git相关配置信息

# set Git enviroment

export GIT_HOME=/usr/local/git

export PATH=$GIT_HOME/bin:$PATH

(8)git version

9、jenkins安装相应插件

(1)安装源码管理选择git需要的插件git、git-server、git-client、github-api、plain-credentials、github

上传插件的时候可能会报错,可以把插件上传顺序改一下在上传

(2) jenkins设置git的安装路径,点击全局工具配置/usr/local/git/bin/git(whereis git 命令可查看)

(3)windows本地安装git,把代码推送到github(需要在github创建一个仓库),参考自动化测试的 《

(4)jenkins配置源码管理选择git,地址输入github项目地址,账号可以先在jenkins凭据配置中添加github账号

输地址或账号的时候可能会报403的错误。解决办法刷新一下或者 在Configure Global Security中开启 启用代理兼容

(5)配置完源码管理,直接进行构建,代码自动下载到/root/jenkins/workspace/git/路径下

10、接下来需要把buildxml中脚本路径改为/root/jenkins/workspace/git/进行构建,可以在Github里提交一个jmx文件构建一下试试

当我们执行下面的hellopy时,使用的flask自带的服务器,完成了web服务的启动。在生产环境中,flask自带的服务器,无法满足性能要求,我们这里采用Gunicorn做wsgi容器,来部署flask程序。Gunicorn(绿色独角兽)是一个Python WSGI的HTTP服务器。从Ruby的独角兽(Unicorn )项目移植。该Gunicorn服务器与各种Web框架兼容,实现非常简单,轻量级的资源消耗。Gunicorn直接用命令启动,不需要编写配置文件,相对uWSGI要容易很多。

区分几个概念

WSGI:全称是Web Server Gateway Interface(web服务器网关接口),它是一种规范,它是web服务器和web应用程序之间的接口。它的作用就像是桥梁,连接在web服务器和web应用框架之间。

uwsgi:是一种传输协议,用于定义传输信息的类型。

uWSGI:是实现了uwsgi协议WSGI的web服务器。

我们的部署方式: nginx + gunicorn + flask

web开发中,部署方式大致类似。简单来说,前端代理使用Nginx主要是为了实现分流、转发、负载均衡,以及分担服务器的压力。Nginx部署简单,内存消耗少,成本低。Nginx既可以做正向代理,也可以做反向代理。

正向代理 :请求经过代理服务器从局域网发出,然后到达互联网上的服务器。

特点 :服务端并不知道真正的客户端是谁。

反向代理 :请求从互联网发出,先进入代理服务器,再转发给局域网内的服务器。

特点 :客户端并不知道真正的服务端是谁。

区别 :正向代理的对象是客户端。反向代理的对象是服务端。

查看命令行选项 : 安装gunicorn成功后,通过命令行的方式可以查看gunicorn的使用信息。

直接运行

指定进程和端口号 : -w: 表示进程(worker)。 -b:表示绑定ip地址和端口号(bind)。--access-logfile:表示指定log文件的路径

作为守护进程后台运行

阿里云服务器默认安装到 /user/sbin/ 目录,进入目录,启动 ngnix:

Ubuntu 上配置 Nginx 也是很简单,不要去改动默认的 nginxconf 只需要将/etc/nginx/sites-available/default文件替换掉就可以了。

新建一个 default 文件,添加以下内容:

修改完成后重启nginx即可。

Ubuntu 上配置 Nginx 另一种方法,cd 到 /etc/nginx/confd 文件夹,新建 xxxconf 文件(xxx 可以是项目名,只要是 conf 文件即可),写入以下内容:

需要监听 https 请求时,写入以下内容:

  扩容磁盘

  描述

  当前仅支持对数据盘的扩容操作。

  只有数据盘类型为普通云盘、高效云盘、SSD

云盘,才可以进行扩容操作。

  挂载在实例上的数据盘,只有实例为

Running

或者

Stopped

状态时,才可以进行扩容操作。

  磁盘上如果正在执行打快照的操作,则此时不允许进行扩容操作。

  挂载在实例上的磁盘,在进行扩容操作后,需要在控制台或者使用

Open

API

重启实例才能使扩容生效。

  扩容仅做磁盘容量的扩大,不做分区和文件系统的扩大,扩容完成后,用户还需要手动分配存储空间。

  请求参数

名称

类型

是否必须

描述

Action

String

系统规定参数,取值:ResizeDisk

DiskId

String

磁盘的编号

NewSize

Integer

希望扩容到的磁盘大小。

GB

为单位,取值范围为

Cloud:5

~

2000

ClientToken

String

用于保证请求的幂等性。由客户端生成该参数值,要保证在不同请求间唯一,最大不值过

64

ASCII

字符。

  返回参数

  全是公共返回参数,详见公共返回参数

  错误码

错误代码

描述

Http

状态码

语义

InvalidDiskSizeTooSmall

Specified

new

disk

size

is

less

than

the

original

disk

size

403

指定的新磁盘容量比原磁盘容量小

InvalidParameter

The

specified

parameter

"NewSize"

is

not

valid

403

指定的新磁盘容量超出了限制范围

OperationDenied

The

status

of

the

disk

or

the

instance

that

the

disk

is

attaching

with

does

not

support

the

operation

403

磁盘或者磁盘所挂载的实例状态不支持扩容

OperationDenied

The

type

of

the

disk

does

not

support

the

operation

403

磁盘类型不支持扩容

InvalidDiskIdNotFound

The

specified

disk

does

not

exist

404

磁盘不存在

InvalidInstanceIdNotFound

The

specified

instance

does

not

exist

404

磁盘所挂载的实例不存在

InstanceExpiredOrInArrears

The

specified

operation

is

denied

as

your

prepay

instance

is

expired

(prepay

mode)

or

in

arrears

(afterpay

mode)

403

磁盘挂载的实例过期

  示例

  请求示例

  https://ecsaliyuncscom/Action=ResizeDisk

  &DiskId=xxx

  &NewSize=1024

  &<公共请求参数>

  返回示例

  'XML'格式

  

  F3CD6886-D8D0-4FEE-B93E-1B73239673DE

  

  'JSON'格式

  {

  "RequestId":

"F3CD6886-D8D0-4FEE-B93E-1B73239673DE"

  }

云服务器(ElasticComputeService,简称ECS)是一种处理能力可弹性伸缩并且简单高效的计算服务。它能够快速构建更稳定、更安全的应用,提升运维效率,降低 IT 成本,相应信息可在阿里云了解。

云服务器的作用有四项:

1、完全管理权限:对云服务器的操作系统有完全控制权,用户可以通过连接管理终端自助解决系统问题,进行各项操作;

2、快照备份与恢复:对云服务器的磁盘数据生成快照,用户可使用快照回滚、恢复以往磁盘数据,加强数据安全;

3、自定义镜像:对已安装应用软件包的云服务器,支持自定义镜像、数据盘快照批量创建服务器,简化用户管理部署;

4、拥有API接口:使用ECS API调用管理,通过安全组功能对一台或多台云服务器进行访问设置,使开发使用更加方便。

云服务器的主要优势:

1、弹性:云服务器ecs的主要原理就是基于服务器群而虚拟化的主机产品,可以弹性地升减配置,按需使用。其使用的应用场景一般可分为注重主机服务性价比的用户; 需要快速实现分布式部署的用户; 对业务的弹性扩展能力有需求的用户; 有系统高可用性和快速恢复需求的用户; 希望轻松管理系统的用户。

2、云服务器租用价格低于传统的物理服务器租用,且无需支付押金,具有快速供应和部署能力。云服务器主要面向中小企业用户与高端用户提供基于互联网的基础设施服务,这一用户群体庞大,且对互联网主机应用的需求日益增加。

可以通过域名访问阿里云服务器上的tomcat,具体步骤如下:

首先需要具备:域名(已备案)、服务器(以安装好系统)

1、安装jdk,配置好环境变量。在控制台Java和javac都正常。

2、安装apache tomcat 

3、开发好的网站项目上传服务器,解压并复制到apache\webapps目录下。

4、修改Tomcat的serverxml(我的是在C:\apache\conf目录下)文件,原默认8080端口改为80

5、Engine节点中defaultHost原localhost改为申请到的域名。

6、Host节点中name原localhost改为目标域名,并且在Host节点中添加如下的Context节点。

7、打开域名管理,添加网站解析,IP填入你云服务器的弹性公网IP即可。 

8、稍等1分钟,即可通过你的域名访问了。

云服务器Elastic Compute Service(ECS)是阿里云提供的一种基础云计算服务。

使用云服务器ECS就像使用水、电、煤气等资源一样便捷、高效。您无需提前采购硬件设备,而是根据业务需要,随时创建所需数量的云服务器ECS实例。在使用过程中,随着业务的扩展,您可以随时扩容磁盘、增加带宽。如果不再需要云服务器,也能随时释放资源,节省费用。

ECS涉及的所有资源,包括实例规格、块存储、镜像、快照、带宽和安全组。您可以通过 云服务器管理控制台或者 阿里云 App 配置您的ECS资源。

云服务器的作用有四项:

1、完全管理权限:对云服务器的操作系统有完全控制权,用户可以通过连接管理终端自助解决系统问题,进行各项操作;

2、快照备份与恢复:对云服务器的磁盘数据生成快照,用户可使用快照回滚、恢复以往磁盘数据,加强数据安全;

3、自定义镜像:对已安装应用软件包的云服务器,支持自定义镜像、数据盘快照批量创建服务器,简化用户管理部署;

4、拥有API接口:使用ECS API调用管理,通过安全组功能对一台或多台云服务器进行访问设置,使开发使用更加方便。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 安卓视频播放(阿里云视频点播播放器SDK+SurfaceView)

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情