现在抖音、快手等直播实在是太火了,因此对音视频的开发非常感兴趣,查阅了相关资料,使用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.zip
wget 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-mastervim objs/Makefile #删除-Werrormakemake 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; #把直播服务器改造成实时回发服务器,视频切片成tswait_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. python打造流媒体服务器_使用Flask搭建一个流媒体服务器

    摘要 收到前不久订阅的PythonWeekly发过来的一个邮件通知,由Miguel写的一篇介绍如何使用Flask搭建一个流媒体服务器的文章,思路很新颖也很有意思.你可以点击这里阅读英文原文.或者跟随本 ...

  2. 使用Flask搭建一个流媒体服务器

    摘要 收到前不久订阅的PythonWeekly发过来的一个邮件通知,由Miguel写的一篇介绍如何使用Flask搭建一个流媒体服务器的文章,思路很新颖也很有意思.你可以点击这里阅读英文原文.或者跟随本 ...

  3. 使用 NGINX 搭建 RTMP 流媒体服务器实现直播功能

    使用 NGINX 搭建 RTMP 流媒体服务器实现直播功能 本文介绍了如何使用 Nginx 搭建 RTMP 流媒体服务器,并提供配置文件和前端示例,实现直播功能. 环境 操作系统: Ubuntu 18 ...

  4. 手把手教你搭建Nginx-rtmp流媒体服务器+使用ffmpeg推流

    手把手教你搭建Nginx-rtmp流媒体服务器+使用ffmpeg推流 转载自:https://www.jianshu.com/p/06c2025edcd3 by – paperfish 最近尝试着搭建 ...

  5. Windows基于Nginx搭建RTMP流媒体服务器(附带所有组件下载地址及验证方法)

    RTMP服务时常用于直播时提供拉流推流传输数据的一种服务.前段时间由于朋友想搭建一套直播时提供稳定数据传输的服务器,所以就研究了一下如何搭建及使用. 1.下载nginx 首先我们要知道一般nginx不 ...

  6. 搭建Nginx-rtmp流媒体服务器+使用ffmpeg推流

    搭建Nginx-rtmp流媒体服务器+使用ffmpeg推流 硕士毕业后,一直从事算法工程师,具有丰富的深度学习,图像视频处理经验,因此录制了一些课程,欢迎大家观看,有问题可以找我私聊:QQ:81664 ...

  7. 使用nginx结合nginx-rtmp-module搭建rtmp流媒体服务器

    环境:centos7.nginx 1.15.2.nginx-rtmp-module(nginx模块).win7主机,vmvare虚拟机(已安装号centos7系统) 安装前提:centos已安装Ope ...

  8. FFmpeg入门详解之100:搭建Nginx流媒体服务器

    这里小编给大家推荐一款流媒体服务器Nginx,可以实现RTMP和HLS等.搭建完成后,可以使用FFmpeg推流,实现直播功能. 注意:操作环境是Ubuntu18.04, 总共分为几个步骤: 1.安装N ...

  9. 10分钟用英特尔®DevKit搭建RTMP流媒体服务器并基于OpenVINO™ AI赋能视频处理

    作者:周兆靖 文章指导:方亮, 郭叶军 1. 本文目的 本文将会介绍如何使用英特尔®认证的DevKit--艾克斯开发板快速搭建RTMP流媒体服务器,并利用FFmpeg*实现视频推流的功能.由于FFmp ...

  10. rtmp服务器_nginx+windwos 搭建 rtmp 流媒体服务器

    喜欢就关注我们吧! " 写此篇文章属于笔者在开发项目中,对项目开发架构的一种选型,目前正在探索阿里云的视频直播服务和nginx自行搭建流媒体服务器,希望能选择最优的一种方案,进行开发.&qu ...

最新文章

  1. Ignoring unused library classes...java.io.IOException: You have to specify '-keep' options for the s
  2. go 切换当前运行目录_go调试利器-delve
  3. guava-collections
  4. mysql大表myisam的导入
  5. 一行语句让你的浏览器变成记事本
  6. 监听APP升级广播处理
  7. 《Java8实战》笔记(12):新的日期和时间API
  8. php 解决跨域问题
  9. 纯php程序无数据,无数据库的详细域名查询程序PHP版(1)_php基础
  10. paip.win32的internet扩展已停止工作解决大法
  11. python 直播源地址_斗鱼直播间真实rtmp地址获取(含工具类下载)
  12. c语言网格搜索,使用逻辑回归时怎么利用网格搜索来查找degree,c等超参数
  13. Java实现网上书店管理系统(idea+MySQL+navicat)
  14. 十折交叉验证和混淆矩阵
  15. 商城开发-用户管理模块(2)
  16. 分布式中间件实践之路
  17. 我裂开了,教给他如何搭建和使用代理服务器,他居然用来做这么不正经的事(爬虫,代理ip)
  18. xss漏洞开源网站包
  19. onenote如何删除笔记本
  20. python: plt.cm.Set1, Set2,Set3返回颜色

热门文章

  1. CentOS 下安装配置mongodb
  2. catalan数的应用
  3. 构造方法传参数的小心得
  4. java 高级api_Java常用API-高级
  5. 0框架前端-如何写一个下拉菜单(Dropdowns)
  6. canvas 文字垂直居中
  7. LibXML2不支持中文补遗
  8. 华为harmonyos公测,华为开启HarmonyOS2.0开发者Beta公测招募第二期
  9. 打包fpm mysql_fpm制做mysql-5.6.33 rpm包
  10. c语言中保存的文件时怎么换行,关于文件操作,碰到空格就换行