闲来无事,看乌兹直播的时候,发现主播开播都需要obs,不是很理解,然后了解了一下。

现在的直播功能,分为推流和拉流。 说俗点就是 主播那端是推流 通过屏幕捕捉或者是 摄像头捕获主播的 面前的东西或者是电脑桌面的东西。然后通过流的方式将数据传输到服务器端,然后服务器端在发送到客户端,客户端那边 也就是观众的那边需要拉流,然后就可以展示到客户端了。当然这些东西都是需要我们程序员来完成了。

需要注意的是推流使用的协议 不再是 http 而是 rtmp;

服务器我使用的是阿里云的轻量应用服务器

阿里的直播,他需要你的拉流客户端,必须是有备案通过的域名作为客户端的,而且 还有时间限制,他规定了一次只能直播多长的时间,你用人家的东西确实挺舒服的,但是就得听人家的安排,如果不想这样就只能自己搞一个服务器了。

这个时候就选择 node.js,还有有大神把直播的插件给开发出来了。

第一步:安装 npm install node-media-server --save
第二步:配置启动 node 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: '*'
    }
};

let nms = new NodeMediaServer(config);
nms.run();

启动成功会出现三条info信息。

接着就是下载obs软件,百度便可以下载,此处不做说明。

关于obs的设置

在软件安装成功以后点击设置,在推流模块的服务器中填入我们刚才写的服务器,如果在本地地址是localhost,如果上传到服务器便是服务器的公网ip

流密钥 自己设置一个记住就ok后面会用到

在这些设置完成之后,便可以点击推流,如果没有错误提示,就是说推流配置成功了。

推流完成之后,我们就需要配置拉流,关于拉流方面的知识,我是菜鸡不是很懂,不要多问,用就ok;

使用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://localhost:8000/qsc.flv'
        });
        flvPlayer.attachMediaElement(videoElement);
        flvPlayer.load();
        flvPlayer.play();
    }
</script>
</body>
</html>

到这一步算是核心基本完成了,这个地方我们还需要搭建一个本地服务器,来访问这个html文件,搭建静态目录的方视也是ok的,这里我使用http-server,安装方式无需多言,使用直接在终端数据http-server即可。

完成这一步,我们就可以使用浏览器就行访问了,用浏览器打开html的链接(通过服务器访问),就可以看到我们的桌面。如果上传到服务器,在直播的时候也可以通过外网来访问。

Last modification:May 27th, 2020 at 08:58 am
来杯coffee吧