前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何搭建自己的流媒体直播带货系统

如何搭建自己的流媒体直播带货系统

作者头像
Tinywan
发布2024-03-02 08:13:59
2880
发布2024-03-02 08:13:59
举报
文章被收录于专栏:开源技术小栈开源技术小栈

简介

  • 直播技术:直播技术可以分为基于传统的RTMP协议和基于HTTP的HLS协议。RTMP协议延迟较低,适合实时性要求较高的场景,而HLS协议兼容性更好,适合各种终端设备。根据需求选择适合的技术。
  • 搭建服务器环境:选择一台性能较好的服务器,可以使用云服务器来搭建直播平台。根据直播技术的选择,配置相应的服务器环境,如安装Nginx、FFmpeg等工具。
  • 视频采集与编码:选择合适的视频采集设备,如摄像头、视频采集卡等,并使用合适的编码器将视频流进行编码,如H.264编码。
  • 流媒体服务器搭建:搭建流媒体服务器用于接收和分发视频流。可以使用开源的流媒体服务器软件,如Nginx-rtmp-module、FFmpeg等。
  • 视频分发与播放:选择合适的内容分发网络(CDN)服务商,将视频流分发到全球各地的用户。同时,选择合适的播放器进行视频播放,如HLS协议可以使用HLS.js、video.js等播放器。
  • 直播平台功能开发:根据需求开发直播平台的功能,如用户注册登录、直播间管理、礼物打赏、弹幕功能等。可以使用前端开发技术(如HTML、CSS、JavaScript)和后端开发技术(如PHP、Java、Python)进行开发。
  • 安全性保障:确保直播平台的安全性,如用户信息加密、防止恶意攻击、防止盗播等。可以使用网络安全产品和服务进行保障。

直播实时编码流

服务器

首先,你需要选择一台高性能的服务器来承载你的流媒体直播系统。服务器的配置应该能够满足你预计的用户量和带宽需求。

安装流媒体服务

流媒体服务器软件是构建直播系统的核心组件。常见的流媒体服务器软件包括Nginx-rtmp、Wowza Streaming Engine、Adobe Media Server等。根据你的需求选择一个适合的流媒体服务器软件,并按照其官方文档进行安装和配置。

服务与模块

Openresty下载
代码语言:javascript
复制
wget https://openresty.org/download/openresty-1.21.4.3.tar.gz
nginx-ts-module下载
代码语言:javascript
复制
git clone https://github.com/arut/nginx-ts-module.git
ffmpeg 下载安装

相关教程请看这里【如何在PHP中使用FFmpeg进行音视频操作】

动态编译安装

Openresty环境配置
代码语言:javascript
复制
apt-get install libreadline-dev libncurses5-dev libpcre3-dev \
libssl-dev perl make build-essential
动态编译安装
代码语言:javascript
复制
./configure --prefix=/opt/openresty --with-luajit --without-http_redis2_module \
--with-http_iconv_module --add-dynamic-module=/root/nginx-ts-module
...
make -j4
...
sudo make install
配置文件

nginx.conf

代码语言:javascript
复制
# vim /opt/openresty/nginx/conf/nginx.conf
error_log  logs/error.log;

pid        logs/nginx.pid;

load_module "/opt/openresty/nginx/modules/ngx_http_ts_module.so"; # 加载模块

events {
}

http {
    server {
        listen 8777;

        location / {
            root html;
        }

        location /publish/ {
            ts;
            ts_hls path=/var/media/hls segment=10s;
            ts_dash path=/var/media/dash segment=10s;

            client_max_body_size 0;
        }

        location /play/ {
            add_header Cache-Control no-cache;
            add_header 'Access-Control-Allow-Origin' '*' always;
            add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
            add_header 'Access-Control-Allow-Headers' 'Range';

            types {
                application/x-mpegURL m3u8;
                application/dash+xml mpd;
                video/MP2T ts;
                video/mp4 mp4;
            }
            alias /var/media/;
        }
    }
}

流媒体存放文件夹建立

代码语言:javascript
复制
cd /var & mkdir media
cd media & mkdir hls & mkdir dash

FFmpeg推流

推流是将视频数据从采集设备(如摄像头)发送到流媒体服务器的过程。你可以使用专业的推流软件(如OBS Studio、FFmpeg等)或者编写自己的推流脚本来实现推流功能。

代码语言:javascript
复制
ffmpeg -re -i rtmp://liteavapp.qcloud.com/live/liteavdemoplayerstreamid -bsf:v h264_mp4toannexb \
-c copy -f mpegts http://127.0.0.1:8777/publish/sintel

我这里由于端口被占用,使用的是:8777 端口

公网 rtmp 测试地址

代码语言:javascript
复制
邓紫棋 多美丽mv (非常流畅秒开级别,强烈推荐)
地址:rtmp://liteavapp.qcloud.com/live/liteavdemoplayerstreamid (可用)

伊拉克 Al Sharqiya 电视台 (有卡顿延迟)
地址:rtmp://ns8.indexforce.com/home/mystream (可用)

韩国GOOD TV (不推荐太卡,很慢)
地址:rtmp://mobliestream.c3tv.com:554/live/goodtv.sdp (可用)

客户端播放

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>开源技术小栈流媒体直播系统</title>
</head>
<body>
<h1>开源技术小栈 | 流媒体直播系统</h1>
<script src="http://cdn.dashjs.org/latest/dash.all.min.js"></script>
<style>
    video {
        width: 1024px;
        height: 600px;
    }
</style>
<div>
    <video data-dashjs-player autoplay src="http://127.0.0.1:8777/play/dash/sintel/index.mpd" controls></video>
</div>
</body>
</html>

播放效果

OBS 推流

如果不使用 ffmpeg 直接拉流到http://127.0.0.1:8777/publish/sintel 服务的解决方案是什么?答案是:OBS

OBS Studio 是 Windows 系统端开源的推流软件,编码使用H264(X264)和AAC ,它一款非常好用的开源直播推流软件,为用户提供了视频、文本、图像等的捕获录制功能。基于GPU的高性能游戏流媒体游戏捕获。支持DirectShow的捕获设备(摄像头,采集卡,等),双线性或lanczos3重采样。当然选择它主要是开源,免费。

解决方案

nginx-rtmp-module下载
代码语言:javascript
复制
git clone https://github.com/arut/nginx-rtmp-module.git

安装nginx-ts-module模块一样动态编译安装既可以,最后别忘记了的在配置文件load nginx-rtmp-module.so文件

代码语言:javascript
复制
# vim /opt/openresty/nginx/conf/nginx.conf
error_log  logs/error.log;

pid        logs/nginx.pid;

load_module "/opt/openresty/nginx/modules/ngx_rtmp_module.so"; # 加载rtmp模块
...
推流顺序
代码语言:javascript
复制
OBS => nginx-rtmp => nginx-ts

通过以上我们可以不直接使用ffmpeg 去推流了,而是在Windows端口可以通过OBS很简单的去推流了

安全性和稳定性优化

为了保证直播系统的安全性和稳定性,你可以采取一些措施,如设置访问权限、使用SSL证书加密传输、配置负载均衡等。

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-02-27,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 开源技术小栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 直播实时编码流
  • 服务器
  • 安装流媒体服务
    • 服务与模块
      • Openresty下载
      • nginx-ts-module下载
      • ffmpeg 下载安装
    • 动态编译安装
      • Openresty环境配置
      • 动态编译安装
      • 配置文件
  • FFmpeg推流
  • 公网 rtmp 测试地址
  • 客户端播放
    • 播放效果
    • OBS 推流
      • 解决方案
        • nginx-rtmp-module下载
        • 推流顺序
    • 安全性和稳定性优化
    相关产品与服务
    云直播
    云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档


    http://www.vxiaotou.com