手把手教你直播APP开发录播功能,以云豹直播系统为例

发布来源:云豹科技
发布人:云豹科技
2021-08-09 10:05:32

从过去的角度来看,内容本身并不够硬的“直播”最大的优势在于可以现场互动,“录播”毫无用处,直播app开发从不考虑录播,但现在随着直播带货的流行,直播的内容加入科普和产品介绍元素,内容逐渐充实,受众看直播的目的不全是互动,更多的是为了对产品真实性的了解,以及产品优势、使用感的讲述。


图片1.png图片2.png


 

因此,在直播app开发时,须得增加“录播”“回访”功能,下面,我们以阿里云云直播为例,系统讲述一下阿里云云直播回放如何实现。

 一、直播app开发回放功能,首先要实现直播推流和播流功能。

1、 实现直播功能的核心就是创建推拉流服务,官方的参考文档:

https://help.aliyun.com/product/29949.html?spm=a2c4g.750001.list.163.37ba7b13kcpurF

2、 关键点获取推流播流地址的参考文档:

https://help.aliyun.com/document_detail/199340.html?spm=a2c4g.11174283.2.24.76ee454eSQZm03#section-0mq-itt-2tp

3、 关于推流和播流地址中的url鉴权生成规则可参考以下文档:

https://help.aliyun.com/document_detail/199349.htm?spm=a2c4g.11186623.2.23.4a591a2dtlFj6Q#concept-2011551

 

二、 代码参考

下面是云豹直播app开发团队编写的获取阿里云推流和播流地址公共方法,可供大家参考:

/**
*  @desc 阿里云直播获取推拉流地址
*  @param string $host 协议,如:http、rtmp
*  @param string $stream 流名,如12327_1620715780
*  @param int $type 类型,0表示播流,1表示推流
*/
function PrivateKey_ali($host,$stream,$type){
$push=''; //替换为自己的推流域名
$pull=''; //替换为自己的播流域名
$key_push=''; //替换为自己的推流鉴权字符串
$length_push=''; //替换为自己的推流鉴权有效时长
$key_pull=''; //替换为自己的播流鉴权字符串
$length_pull=''; //替换为自己的播流鉴权有效时长
        
        $stream_a=explode('.',$stream);
$streamKey = isset($stream_a[0])?$stream_a[0]:'';
if($type==1){
$domain=$host.'://'.$push;
$time=time() + $length_push;
}else{
$domain=$host.'://'.$pull;
$time=time() + $length_pull;
}
$filename="/5showcam/".$stream;
if($type==1){
            if($key_push!=''){
                $string = $filename."-".$time."-0-0-".$key_push;
                $md5=md5($string);
                $auth_key="auth_key=".$time."-0-0-".$md5;
            }
if($auth_key){
$auth_key='?'.$auth_key;
}
$url=array(
'cdn'=>$domain.'/5showcam',
'stream'=>$stream.$auth_key,
);
}else{
            if($key_pull!=''){
                $string = $filename."-".$time."-0-0-".$key_pull;
                $md5=md5($string);
                $auth_key="auth_key=".$time."-0-0-".$md5;
            }
if($auth_key){
$auth_key='?'.$auth_key;
}
$url=$domain.$filename.$auth_key;
            
            $site=''; //替换为自己的站点域名
            
            if(strstr($site,'https')){
                $url=str_replace('http:','https:',$url);
            }
if($type==3){
$url_a=explode('/'.$stream,$url);
$url=array(
'cdn'=>$url_a[0],
'stream'=>$stream.$url_a[1],
);
}
}
return $url;
}


 生成推拉流地址时,直接调用该方法即可。如:

$push_url=PrivateKey_ali('rtmp','12327_1620715780',1);
$play_url=PrivateKey_ali('rtmp','12327_1620715780',0);


 

三、 推流和播流地址创建成功后

直播app开发不一定要手把手写代码,在推流方面,我们可以使用obs软件进行推流,使用播放器可以查看播流地址是否可以播放。

1、 配置直播回放的参考文档如下:

https://help.aliyun.com/document_detail/85018.htm?spm=a2c4g.11186623.2.13.77ed768bkUgQBU#task-2012179


 图片3.png

 

2、 我们整理如下:

先登录阿里云控制台,开通oss服务。


图片4.png


开通后回到上图的页面,强刷下页面,会出来添加录制的信息,如下,点击【管理录制配置】


图片5.png

图片6.png

图片7.png

 

开通点播服务后,回到录制文件管理图片处,重新刷新,如下图:

图片8.png

 图片9.png 

 图片10.png


然后创建存储桶(注意,存储桶的地域必须与播流域名的地域选择一样的,否则无法存储)


图片11.png

 

设置回调地址

域名/Appapi/liveback/index


 图片12.png

 

3、 回调方法如下:

function index(){
$request = file_get_contents("php://input");
        $this->callbacklog('callback request:'.json_encode($request));
$data = json_decode($request, true);
if(!$data){
$this->callbacklog("request para json format error");
$result['code']=4001;
echo json_encode($result); 
exit;
}
if(array_key_exists("uri",$data)  && array_key_exists("stream",$data)){
/* 回放回调 */
if(array_key_exists("start_time",$data) && array_key_exists("stop_time",$data) ){
$aliy_playback_site='';  //回放地址主域名
$video_url = $aliy_playback_site.'/'.$data['uri'];
$stream_id=$data['stream'];
$start_time = $data['start_time'];
$end_time = $data['stop_time'];
}else{
$this->callbacklog("request para error:回放信息参数缺少" );
$result['code']=4002;
echo json_encode($result); 
exit;
}     
$data1=array(
"video_url"=>$video_url
);
Db::name("live_record")->where(["stream"=>$stream_id])->update($data1);
$result['code']=$ret; 
echo json_encode($result); 
exit;
}else {
$this->callbacklog("request para error");
$result['code']=4002;
echo json_encode($result); 
exit;
}
}
public function callbacklog($msg){   file_put_contents(CMF_ROOT.'data/liveback_'.date('Y-m-d').'.txt',date('Y-m-d H:i:s').' 提交参数信息 :'.$msg."\r\n",FILE_APPEND);
}


四、 测试

打开直播app,开播一会后关播,然后在个人中心头像右侧点击箭头,选择直播,点击最新的开播记录,如果能播放刚才的直播,表明直播app开发回放功能操作成功。

 声明:以上内容为云豹科技作者本人原创,未经作者本人同意,禁止转载,否则将追究相关法律责任www.yunbaokj.com

声明:
以上内容为云豹科技作者本人原创,未经作者本人同意,禁止转载,否则将追究相关法律责任
立即查看