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

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

一、拉流和推流

(1)什么是拉流:拉流顾名思义就是播放(详细解释可以百度)

(2)什么是推流:推流,指的是把采集阶段封包好的内容传输到服务器的过程
阿里云视频直播开发的好多坑_第1张图片
二、直播配置

详情看文档或者百度,有很多资料

三、推流播流地址拼接
阿里云视频直播开发的好多坑_第2张图片
废话不多说直接上代码

// 时间戳

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);

四、为什么你的鉴权时间没有过期?

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

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

1.为啥你的m3u8地址播放不了?
还是在你配置正确的前提下,你的录像m3u8地址播放不了是因为两个原因:(1)前端跨域问题(这个不详细解释) (2)oss权限问题,如果你的录像文件存到oss服务器上,如果你要访问需要权限,如果你仔细查看文档,文档会让你通过签名的方式去访问。签名代码如下。
阿里云视频直播开发的好多坑_第3张图片
上图中的type不要管是什么,和签名没有关系,一定要注意红框中req.setProcess 这个又是一个坑,如果你不写这个你签完名以后你还是访问不了你的m3u8地址,为什么呢?
因为你签名只签名了你的m3u8的文件,那m3u8相关的ts文件你没有签名,所以加上req.setProcess

你可能感兴趣的:(阿里云,直播,阿里云oss)