专栏首页Pou光明Qt显示视频流——nginx+rtmp搭建直播服务器(二)

Qt显示视频流——nginx+rtmp搭建直播服务器(二)

上次介绍的是使用ffmpeg推流,这次介绍的是使用nginx + rtmp搭建直播服务器。

环境:ubuntu 16.04

一、 安装nginx 和 rtmp模块

1. 下载安装 nginx 和 nginx-rtmp 编译依赖工具

sudo apt-get install -y curl build-essential libpcre3 libpcre3-dev libpcre++-dev zlib1g-dev libcurl4-openssl-dev libssl-dev

2. 创建编译所用目录

mkdir -p ~nginx_src

cd ~nginx_src

3. 下载nginx源码包并解压

wget http://nginx.org/download/nginx-1.11.8.tar.gz

tar -zxvf nginx-1.11.8.tar.gz

4. 下载 nginx-rtmp-module模块 源码包(RTMP模块源码包)并解压

wget https://github.com/arut/nginx-rtmp-module/archive/master.zip

unzip master.zip

5. 进入nginx目录设定编译参数

cd cd nginx-1.11.8

./configure--prefix=/usr/local/dev_workspace/nginx --add-module=../nginx-rtmp-module-master --with-http_ssl_module

6. 编译安装

make

sudo make install

注意:如果没有安装第一步的依赖工具,可能出现以下错误:

./configure: error: the HTTP rewrite module requires the PCRE library.………………………………

7. 完成验证

操作如图:

二、 修改nginx配置文件添加rtmp服务

1. 配置文件目录

/usr/local/dev_workspace/nginx/nginx.conf

2. 添加以下内容

rtmp {

server {

listen 1935; #监听的端口

chunk_size 4000;

application hls {

live on;

}

}

}

注意:①直接配置文件增加 与http协议同级

②修改前先将原文件.bak备份

至此,nginx 及nginx-rtmp-module部分配置完成 。

三、安装Strobe Media Playback

1. 下载网址 https://sourceforge.net/projects/smp.adobe/

在/usr/local/dev_workspace/nginx/html下新建rtmp文件夹

解压好后将for Flash Player 10.1复制到rtmp文件夹下并重命名为strobe

cp -r for Flash Player 10.1/ /usr/local/dev_workspace/nginx/html/rtmp/strobe

2.在/usr/local/dev_workspace/nginx/html/rtmp下新建一个video.html

程序如下:

<!DOCTYPE html>
<html>
<head>
<title>Live Streaming</title>
 
<!-- strobe -->
<script type="text/javascript" src="strobe/lib/swfobject.js"></script>
<script type="text/javascript">
  var parameters = {  
     //src: "rtmp://{pi_address}/rtmp/live",
   src: "rtmp://192.168.15.129:1935/hls/video",
     autoPlay: false,  
     controlBarAutoHide: false,  
     playButtonOverlay: true,  
     showVideoInfoOverlayOnStartUp: true,  
     optimizeBuffering : false,  
     initialBufferTime : 0.1,  
     expandedBufferTime : 0.1,  
     minContinuousPlayback : 0.1,  
     poster: "images/poster.png"  
  };  
  swfobject.embedSWF(
    "strobe/StrobeMediaPlayback.swf"
    , "StrobeMediaPlayback"
    , 1024
    , 768
    , "10.1.0"
    , "strobe/expressInstall.swf"
    , parameters
    , {
      allowFullScreen: "true"
    }
    , {
      name: "StrobeMediaPlayback"
    }
  );
</script>
 
</head>
<body>
<div id="StrobeMediaPlayback"></div>
</body>
</html>

注意:①"rtmp://192.168.15.129:1935/hls/video"该地址是ffmpeg推流

到的虚拟目录,

②, 1024, 768 这两个参数是视频流的长和宽,根据Qt设置的

WebView进行调整。否则只调整WebView是没有用的。

至此,nginx+rtmp以及Strobe Media Playback安装并且配置完成了。

下次将根据项目需要,给ffmpeg安装一些其他库,并且使用qt的webview通过Url显示视频流.

最后附上经典参考文献连接:

https://obsproject.com/forum/resources/how-to-set-up-your-own-private-rtmp-server-using-nginx.50/

本文分享自微信公众号 - Pou光明(pou0230),作者:大皮

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-08-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Qt使用C/C++扩展Python内置模块

    之前和大家介绍过在C/C++中嵌入Python,本次和大家分享下使用C/C++扩展Python内置模块的方法。

    用户5908113
  • Qt TreeWidget 控件(一)

    Qt 的List Widget、Tree Widget和Table Widget属于Qt Model/View中的简便类,之前文章介绍过Qt Model/Vie...

    用户5908113
  • 十六进制文本转字符存储到二进制文件

    1. 主要说下将两个字符转为一组十六进制字符这块。试想一下将123分解为1 2 3三个字符,即每次对10取余然后取出字符;这里与之相反,提取出字符后每次左移4位...

    用户5908113
  • 解决苹果app上线需要支持ipv6的问题

    新账号关联我们公司购买腾讯云产品,有优惠哦!联系电话:13430587834(微信同号)

    深圳市网商天下-网商云
  • Lnmp中ngxin升级版本的操作过程

    Lnmp中nginx版本升级如何操作?lnmp中的nginx升级版本是蛮重要的一件事情,如果你一直在使用lnmp的话,及时升级到lnmp1.5版本,也要额外查看...

    魏艾斯博客www.vpsss.net
  • linux 下 nginx 安装echo扩展模块

    echo 模块可以将nginx 变量的信息输出到网页中。echo 模块对学习nginx 配置文件有很大帮助,对应调试nginx 配置文件中变量特步方便。想要深...

    地球流浪猫
  • Nginx 热部署和日志切割,你学会了吗?

    这篇文章主要讲解 Nginx 命令行相关知识,并通过日常开发中遇到的热部署、切割日志文件案例来熟悉 Nginx 命令行操作。

    黄泽杰
  • Nginx 热部署和日志切割,你学会了吗?

    上篇文章,我们已经安装好 Nginx,并且配置好 Nginx 文件后,这个时候我就需要操作 Nginx 的命令行了,这篇文章主要讲解 Nginx 命令行相关知识...

    武培轩
  • CODING 企业版携手企业微信共同助力企业开发管理流程

    CODING 企业版自即日起添加与企业微信账号的关联功能。通过与企业微信的绑定,项目管理者可以一键邀请企业微信好友,直接进行项目和代码的管理与操作。方便受邀者立...

    CODING研发管理系统
  • 利用企业微信给自己的微信发送消息通知

    基本发送消息的流程是先从微信获取access_token,然后调用发送消息的api就能实现收到消息,其他具体的可玩性可以具体去看看企业微信服务端api。

    槽痞

扫码关注云+社区

领取腾讯云代金券