现在的直播功能,分为推流和拉流。 说俗点就是 主播那端是推流 通过屏幕捕捉或者是 摄像头捕获主播的 面前的东西或者是电脑桌面的东西。然后通过流的方式将数据传输到服务器端,然后服务器端在发送到客户端,客户端那边 也就是观众的那边需要拉流,然后就可以展示到 客户端了。
node.js后端
首先我们需要下载一个插件
1.安装
npm install node-media-server --save
2.配置启动(node index.js)
// index.js
const NodeMediaServer = require('node-media-server');
const config = {
rtmp: {
port: 1935,
chunk_size: 60000,
gop_cache: true,
ping: 30,
ping_timeout: 60
},
http: {
port: 8000,
allow_origin: '*'
}
};
var nms = new NodeMediaServer(config)
nms.run();
启动成功的效果
安装(推流)
1.安装OBS:
https://obsproject.com/ // 下载地址
2.配置:
点击左下边 来源的 加号 然后 选择 桌面捕获
然后就会出现以下的这种情况
然后就是 开始推流了 上面我们已经用node.js搭建好了 流服务器了。点击右下边的 设置
我这里使用的是 ip地址 因为一会我要让 手机看到 所以不能用 localhost 进行设置
在这里服务器我设置为rtmp://192.168.1.28/live/
192.168.1.28则是我所链接的局域网的ip (可以打开cmd输入ipconfig)
推流码可以自定义设置 在这里我设置为zrr
配置完后 保存 点击开始推流
服务器端 有变化 就说明了 你的推流成功了 。
拉流(客户端)
使用过 flv 的方式 进行拉流的,下面是客户端了拉流代码
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script src="https://cdn.bootcss.com/flv.js/1.4.0/flv.min.js"></script>
<video id="videoElement" style="width: 100%;" controls="controls"></video>
<script>
if (flvjs.isSupported()) {
var videoElement = document.getElementById('videoElement');
var flvPlayer = flvjs.createPlayer({
type: 'flv',
url:'http://192.168.1.28:8000/live/zrr.flv''
});
flvPlayer.attachMediaElement(videoElement);
flvPlayer.load();
flvPlayer.play();
}
</script>
</body>
</html>
打开浏览器 刚好看到就是 我刚刚在做的动作 这个很正常 因为直播就是会有延迟的。
但是会出现一个问题,就是 OBS的 显示器桌面 捕捉 必须 得是集成显卡 要不然我们播放的页面就会是黑屏加载的一个状态 针对这个问题 我们可以去设备管理器中把 独显 给禁用了就可以了(windows10笔记本会出现这种情况)
此外我们如果想要在手机上进行一个直播,那么我们可以在手机上下载一个V导播录屏
以下则是手机推流电脑实现的一个效果