阿里云视频直播开发的好多坑

这篇文章主要是介绍阿里云直播开发中的一些坑,不是很详细,由于关于开发相关的资料网上有不少,可是关于坑的文章有不多,若是有啥不懂的能够下方评论,一块儿交流~~~~
简单介绍一下拉流和推流以及推流拉流地址拼接,剩下的主要是讲坑,注意拉流和播流的意思是同样的。

1、拉流和推流前端

(1)什么是拉流:拉流顾名思义就是播放(详细解释能够百度)跨域

(2)什么是推流:推流,指的是把采集阶段封包好的内容传输到服务器的过程
image.png
2、直播配置服务器

详情看文档或者百度,有不少资料app

3、推流播流地址拼接
image.png
废话很少说直接上代码阿里云

// 时间戳

long time=timeConversion(lapseTime);//时间戳能够动态生成,代码参考下面的时间戳生成代码

// APP名称

String appName="APP名称";

// 摄像头编号名称

String streamName=cloudEyeId;

// 播流域名

String playHost="播流域名";

// 推流域名

String pushHost="推流域名";

// 推流鉴权主key

String  pushKye="推流鉴权主key";

// 播放鉴权主key

String  playKye="播放鉴权主key";

// 随机数不要有下划线 //随机数能够为o

String  rand=UUIDGenerator.generate();

// 加密

String strPlay="/"+appName+"/"+streamName+"-"+time+"-0-0-"+playKye;

String strPush="/"+appName+"/"+streamName+"-"+pushTime+"-0-0-"+pushKye;

// 播放流拼接rtmp

String playUrl="rtmp://"+playHost+"/"+appName+"/"+streamName+"?auth\_key="+time+"-0-0-"+DigestUtils.md5Hex(strPlay);

// 推流拼接rtmp

String pushUrl="rtmp://"+pushHost+"/"+appName+"/"+streamName+"?auth\_key="+pushTime+"-0-0-"+ DigestUtils.md5Hex(strPush);

System.out.println(">>>>>>>>>>>>>>>播流地址"+playUrl);

System.out.println(">>>>>>>>>>>>>>>m3u8"+m3u8);

System.out.println(">>>>>>>>>>>>>>>推流地址"+pushUrl);

时间戳生成 注意鉴权过时时间不要毫秒这是一个坑文档有写必定要注意!!!!加密

Long time = System.currentTimeMillis();

time += startTime \* 1000 \* 60; //当前时间加上30分钟

s=(new Date(time).getTime()/1000);

4、为何你的鉴权时间没有过时?spa

怎么查看鉴权时间过不过时,若是你设置了鉴权时间,在过时时间用vlc播放播流地址,播放不了说明,时效时间生效了code

这是一个特别大的坑,在保证你代码准确,并且配置正确的前提下,若是你的鉴权时间到了,你的播流地址没有过时,**是由于播流过时时间是你的后台过时时间+你代码设置的过时时间=失效时间
意思就是你视频直播控制台设置了10分钟的时效时间,而你代码也设置了10分钟的时效时间,这样时效时间就成了20分钟。**
5、直播录像的一些坑视频

1.为啥你的m3u8地址播放不了?
仍是在你配置正确的前提下,你的录像m3u8地址播放不了是由于两个缘由:(1)前端跨域问题(这个不详细解释) (2)oss权限问题,若是你的录像文件存到oss服务器上,若是你要访问须要权限,若是你仔细查看文档,文档会让你经过签名的方式去访问。签名代码以下。
image.png
上图中的type不要管是什么,和签名没有关系,必定要注意红框中req.setProcess 这个又是一个坑,若是你不写这个你签完名之后你仍是访问不了你的m3u8地址,为何呢?
由于你签名只签名了你的m3u8的文件,那m3u8相关的ts文件你没有签名,因此加上req.setProcessblog

相关文章
相关标签/搜索