HowTo直播

准备工作:注册微吼云账号,并拿到appId,如未则点击微吼云

SDK引入

在需要播放视频的页面(包括PC或H5)中引入初始化脚本

<script src="https://static.vhallyun.com/jssdk/vhall-jssdk-live-stream-1.0.0.js"></script>
<script src="https://static.vhallyun.com/jssdk/vhall-jssdk-base-1.0.0.js"></script>

注意:

  1. 直接用本地网页是调试不了的
  2. 上面两个文件都需要引用,而且顺序需要保持与上面一致
  3. 建议直接复制上面代码

创建推流器对象

在需要web直播推流的页面位置加入推流器容器,也就是放一个div,然后给它取个名字,比如: my-publisher 。之后推流回显画面都会在这个容器里渲染,示例代码如下:

	<div id="my-publisher"></div>

注册ready事件

Vhall.ready(function(){
    //todo
})

注意: 初始化完成之后,会执行ready回调事件,机制同jQuery ready事件,推流逻辑需要写在此事件里。

初始化SDK配置

初始化配置:

 Vhall.config({
     appId :'',//应用 ID ,必填
     accountId :'',//第三方用户唯一标识,必填
     token:'',//token必填
 })     

注意: appId获取方式:登陆微吼云>>进应用管理>>取得对应AppId token生成方式:通过API生成,生成accessToken接口说明

初始化推流

VHPublisher.init({
	roomId:'lss_22b89748',//房间名称
	videoNode:'my-publisher',//推流容器
	//调用推流接口后完成事件,注意,是调用接口事件完成,不是推流结束。
	complete:function(){
		//to do
	}
});

注意:

1.此方法必需写在Vhall.ready事件里。

2.roomId获取方式,登陆微吼云>>进入应用管理>>找到对应需要推流的应用>>点“直播管理”>>房间管理>>取得相应房间ID。

3.videoNode,为推流回显容器的Id,需要开发者自己在需要显示回显的地方,创建一个空div,然后给Id命名,再将id名称写入此参数。参考 “直播使用流程step5: 创建推流器对象”

推流

此方法既可以不传任何参数来调用(使用默认参数),也可以自定义参数来调用,如下示例:


//简单调用方法
	VHPublisher.startPush();

//自定义参数调用方法
	VHPublisher.startPush({
		camera:'',//摄像头名称,不传值则使用默认摄像头
		mic:'',//麦克风名称,不传值则使用默认麦克风
		width:'',//推流分辨率的宽度,不传值则使用默认分辨率:853,
		height:'',//推流分辨率的高度,不传值则使用默认分辨率:480
		//成功回调,非必填
		success:function(){
			//after success todo 
		},
		//失败回调,非必填
		fail:function(){
			//after failed todo
		}
	});


注意: 此方法必需写在Vhall.ready事件里。

完整代码如下:


<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>demo  for push stream</title>
	<script src="https://static.vhallyun.com/jssdk/vhall-jssdk-live-stream-1.0.0.js?v=201802021400"></script>
	<script src="https://static.vhallyun.com/jssdk/vhall-jssdk-base-1.0.0.js?v=201802021400"></script>
	<style>
		body{
			background-color: #000;
/*			height: 800px;
			line-height: 800px;*/
		}
		.ctrl-box{
			margin:0 auto;
			text-align: center;
			margin:10% 0px 30px 0px;
		}
		.video-box{
			margin:0 auto;
			width: 854px;
			height: 480px;
		}
		#btn-start-push{
			min-width: 80px;
			padding: 5px 10px;
			height: 30px;
			background-color: #1f88e4;
			border: 1px solid #1f88e4;
			border-radius: 2px;
			color: #fff;
			outline: none;
		}
	</style>
</head>
<body>
	<div class="ctrl-box"><button id="btn-start-push">开推</button></div>
	<div class="video-box" >
		<div id="my-publisher" ></div>
	</div>

</body>
<script>
	Vhall.ready(function(){
	    //todo
	    VHPublisher.error(function(e){
	    	console.error(e.msg);
	    });

	    VHPublisher.init({
			roomId:'lss_c063b5c9',//房间名称
			videoNode:'my-publisher',//推流容器
			//调用推流接口后完成事件,注意,是调用接口事件完成,不是推流结束。
			complete:function(){
				//to do
			}
		});

	});

	 Vhall.config({
	     appId :'76043aaf',//应用 ID ,必填
	     accountId :'10000126',//第三方用户唯一标识,必填
	     token:'vhall',//token必填
	 });

	var startBtn = document.getElementById('btn-start-push');
    startBtn.addEventListener('click',startPush);

	/**
	 * 开始推流
	 */
    function startPush(){

    	startBtn.innerHTML = '启动推流中...';
    	VHPublisher.startPush({
    		success: function(){
    			
    			startBtn.removeEventListener('click',startPush);
    			startBtn.innerHTML = '停推';
    			startBtn.addEventListener('click',stopPush);

    		},
    		fail: function(e){
    			console.error('推流出错',e.msg);
    		},
    		complete: function(e){
    			
    		}	
    	});
    }

    function stopPush(){

    	VHPublisher.stopPush({
    		complete: function(){
    			startBtn.removeEventListener('click',stopPush);
    			startBtn.addEventListener('click',startPush);
    			startBtn.innerHTML = '开推'
    		}
    	});
    }

</script>
</html>