现在抖音、快手等直播实在是太火了,因此对音视频的开发非常感兴趣。查阅了相关资料,使用Nginx搭建一个简单的直播跟点播流媒体服务器,能够实时推流到服务器,同时在网页端播放直播的视频。

先上效果

使用OBS软件录制电脑桌面操作推流到自己搭建的流媒体服务器,然后在网页拉流播放。
    当然也可以采集摄像头、麦克风或者推送本地视频文件到流媒体服务器。

搭建步骤

Ubuntu18.04安装nginx-flv模块扩展

这里我是用虚拟机安装了Ubuntu18.04先下载nginx1.19.3的源码与nginx-http-flv-module的源码。

wget https://github.com/winshining/nginx-http-flv-module/archive/master.zipwget http://nginx.org/download/nginx-1.19.3.tar.gz  && tar -zxvf nginx-1.19.3.tar.gz

解压下载的个源码进行编译,这样一个Nginx搭建的流媒体服务器就好了。

 cd nginx-1.19.3 #进入nginx源码目录 ./configure --add-module=../nginx-http-flv-module-master vim objs/Makefile #删除-Werror make make install

进行点播与直播配置

上面已经安装好了nginx,编辑/usr/local/nginx/conf/nginx.conf进行相关配置。这里直接贴出完整的配置。其中rtmp为开启rtmp服务功能,并且为了能够在网页端播放开启了hls。推流的rmtp流会转换成hls协议的ts切片,保存在服务器上,nginx配置了location让网页能够访问切好的hls切片。

这里解释下rtmp是adboe的私有协议,必须使用flash播放。hls是苹果开发的视频传输协议使用http进行传输。ios跟android支撑的都很好,一般进行跨平台直播使用hls协议比较常见。

#user  nobody;worker_processes  1;events {    worker_connections  1024;}

rtmp {                #RTMP服务   server {          listen 1935;  #//服务端口        chunk_size 4096;   #//数据传输块的大小

        application vod {                play /opt/video/vod; #//视频文件存放位置。        }        application live{            live on; #直播            hls on; #把直播服务器改造成实时回发服务器,视频切片成ts            wait_key on; #对视频切片进行保护            hls_path /opt/video/rtmp/hls; #ts切片存放位置            hls_fragment 10s; #切片大小            hls_playlist_length 60s; #回看的时间            hls_continuous on; #连续模式            hls_cleanup on; #对多余切片进行删除            hls_nested on; #嵌套模式        }   }}http {    include       mime.types;    default_type  application/octet-stream;    sendfile        on;    keepalive_timeout  65;    server {        listen       80;        server_name  localhost;        location /stat {    #第二处添加的location字段。            rtmp_stat all;          rtmp_stat_stylesheet stat.xsl;        }

           location /stat.xsl { #第二处添加的location字段。        root /usr/local/nginx-http-flv-module/;          }     location /hls {           types {               application/vnd.apple.mpegurl m3u8;                   video/mp2t ts;            }         alias /opt/video/rtmp/hls;            add_header Cache-Control no-cache;            add_header Access-Control-Allow-Origin *;         }         location / {            root   html;            index  index.html index.htm;        }}

进行测试

使用obs推流推送到rtmp://192.168.227.128/live串流密钥随便填写即可。

h5网页端采用video.js进行播放直播流视频,这里的播放的地址是切好片的m3u8文件地址,m3u8存放了每一个小切片的地址。

<body>  <video id=example-video width=600 height=300 class="video-js vjs-default-skin" controls>    <sourcesrc="http://192.168.227.128/hls/test/index.m3u8"type="application/x-mpegURL">  video>  <link href="//vjs.zencdn.net/7.8.2/video-js.min.css" rel="stylesheet">  <script src="//vjs.zencdn.net/7.8.2/video.min.js">script>  <script src="videojs-contrib-hls.min.js">script>  <script src="https://unpkg.com/browse/@videojs/http-streaming@2.2.3/dist/videojs-http-streaming.min.js">script>  <script>var player = videojs('example-video');  player.play();script> body>

上面的nginx配置还配置了本地视频文件点播配置,把视频文件放在/opt/video/vod位置,使用vlc填写rtmp://192.168.227.128/vod/qlgame.mp4进行播放即可。

    以上搭建只是测试学习使用,实际音视频开发涉及采集、编码、推流、传输、拉流、解码等等过程,每一个过程都设计许多知识。后面音视频开发学习笔记,等我攒了一些笔记发出来互相学习。

网页测试本地服务器_音视频开发搭建一个直播服务器相关推荐

  1. 一个域名使用多个服务器_如何使用linuxgsm搭建一个求生之路服务器

    搭建linuxgsm托管的求生之路2服务器 我使用的是Linux系统来跑求生之路2服务器端,因此使用了Linux上一个专门用于搭建游戏服务端的软件:Linux Game Server Managers ...

  2. 安卓 camera 调用流程_音视频开发之旅(四)Camera视频采集

    目录 Camera基础知识 视频采集的流程 遇到的问题和常见的坑(重点) 收获 一. Camera基础知识 Camera 有几个重要的基础概念. facing相机的方向,一般后置摄像头和前置摄像头. ...

  3. datagrid 重载本地数据_音视频系列3:使用ffmpeg + nginx搭建本地转发服务器

    本文与csdn博客同步:https://blog.csdn.net/Hanghang_/article/details/104893135,欢迎关注,点赞,评论. 前言 音视频系列: HectoorZ ...

  4. Android音视频开发;斗鱼直播实现

    一.直播的本质 实时推送/拉取音视频数据 二.视频直播流程 视频直播的流程可以分为如下几步: (1)采集 (2)处理 (3)编码和封装 (4)推流到服务器 (5)服务器流分发 (6)播放器流播放 1. ...

  5. 手把手教你搭建一个直播服务器(Nginx+Rtsp)

    本教程感谢慕课网 常用工具: ffmpeg音视频编解码 ffplay音视频播放工具 搭建流媒体服务器 准备流媒体服务器linux 准备并安装Nginx服务 配置RTMP并启动Nginx服务 1.lin ...

  6. 简单搭建一个直播服务器

    一.动手搭建流媒体服务器 1.下载srsv2.0_r8 ,下载地址是:https://codeload.github.com/ossrs/srs/zip/v2.0-r8 建议用迅雷下载,个人感觉比较快 ...

  7. svn服务器搭建和使用_简单使用nodejs搭建一个静态服务器

    前提:系统安装nodejs 搭建步骤 使用nodejs搭建服务器,简单的来说可以分为三步: require相应的模块 创建服务器 配置端口 启动服务器 必要的nodejs模块 以下模块都是以 var ...

  8. python做游戏服务器_浅谈如何做一个游戏服务器

    首先要知道游戏类型是什么,然后知道承载人数是多少,以及开发周期多少.需要根据这些来决定游戏架构和技术选型. 网络和数据协议 网络传输tcp VS udp tcp可靠保序,而udp则不是,但是吞吐量会大 ...

  9. 从直播答题看背后的移动音视频开发

    直播答题经历了火山喷发式的火爆,展晓凯和他的团队也经历了在短短数周内完成产品开发.测试.上线.运营.迭代的过程,他从产品逻辑.技术实现.难点突破等方面给出了自己的方案与经验.本文来自全民快乐研发高级总 ...

最新文章

  1. oracle 状态unknown,Oracle RAC 一个节点的instance资源状态为unknown
  2. php适配器模式应用,什么是适配器模式,它有哪些应用场景
  3. Sleep()和wait()方法的区别
  4. html语言中div怎么起名,css如何命名?
  5. linq绑定下拉列表,combobox中增加listitem的方法,增加“请选择”
  6. 测试软件项目的方法,保证项目测试进度的几个方法
  7. web 后台返回json格式数据的方式(status 406)
  8. 第十六期:Vue 3.0 前瞻,体验 Vue Function API
  9. 输入学生的个数,姓名,成绩,然后按照学生的成绩的降序来打印学生的姓名
  10. MySQL 8密码策略
  11. 车辆抵押贷款风险分析
  12. linux 4433端口,linux – 使用相同的openssl端口443绑定不同端口的apache ssl端口
  13. Java判断文件是否为图片
  14. Android 开机第一帧制作、开关机动画制作、壁纸添加
  15. JavaScript内容回顾第十天
  16. 第三批更新鸿蒙系统,emui11第三批更新名单-emui11第三批更新名单介绍 - 系统家园...
  17. Android apk瘦身之使用TinyPng压缩图片
  18. doraemon的python(大更新) django静态文件的配置(出错多的地方)
  19. 基于大数据的网站日志分析系统
  20. ​1000+数字化精英汇聚,3大低代码解决方案发布,奥哲低代码数字化解决方案发布会圆满落幕

热门文章

  1. 【宽搜】XMU 1039 Treausure
  2. 8张图带你理解Java整个只是网络(转载)
  3. Redis简介、与memcached比较、存储方式、应用场景、生产经验教训、安全设置、key的建议、安装和常用数据类型介绍、ServiceStack.Redis使用(1)...
  4. LeetCode: Jump Game II
  5. keygen基本流程
  6. SQL Server统计信息:问题和解决方式
  7. 解决iOS机型点击输入框不能聚焦的问题
  8. MYSQL连接一段时间不操作后出现异常的解决方案
  9. 解决无法安装cnpm,cnpm卡顿问题
  10. Spring全局异常处理