RTMP服务器搭建(crtmpserver和nginx)简介

简介

  • 环境搭建
  • crtmapserver编译
  • FFmpeg推流
  • rtmp流拉取
  • 使用nginx配置rtmp服务器
  • FFmpeg使用语法

环境搭建

需要安装 wget cmake libssl-dev

apt-get install wget cmake
apt-get install libssl-dev

crtmapserver编译

获取代码

可以从github上获取crtmapserver

wget https://codeload.github.com/j0sh/crtmpserver/zip/centosinit
编译
unzip centosinit
cd builders/cmake
cmake . 
make
启动
./crtmpserver/crtmpserver ./crtmpserver/crtmpserver.lua

FFmpeg推流

下载FFmpeg

官网上下载即可FFmpeg

0.png

解压后加入到window的系统环境变量中,方便后面的命令操作。

推流
ffmpeg -i wz.mp4 -f flv rtmp://192.168.136.131/live/test

2.png

rtmp流拉取

这里使用VLC播放器,下载VLC 开始播放,点击[媒体]->[流]->[网络] 输入刚刚推流的地址。然后选在下方的播放。

3.png

接下来就成功的播放了直播流视频

4.png

使用nginx配置rtmp服务器

下载安装nginx和nginx-rtmp-module

6.png

编译安装nginx
cd nginx-1.12.1
./configure --add-module=/root/nginx-rtmp-module
make
make install

编译安装完后nginx目录在/usr/local/nginx下 而nginx的基本命令在sbin下。进入到sbin下

  • 启动 ./nginx
  • 重启 ./nginx -s reload 其他更多命令可自行查找。
配置nginx的rtmp服务

编辑conf/nginx.conf。添加以下配置

7.png

live就是我们推流和拉流的名字。然后重启nginx。 我们继续使用ffmpeg来推流

ffmpeg -re -i wz.mp4 -c copy -f flv rtmp://192.168.136.131/live/

这里采用拷贝的方式,不进行压缩。 然后使用VLC播放。

5.png

推流状态查看

在nginx.cnf的http块下添加

    location /stat {    
            rtmp_stat all;
        rtmp_stat_stylesheet stat.xsl;
    }

    location /stat.xsl { 
        root /usr/local/nginx/nginx-rtmp-module/;
    }

打开网页就可以看到正在推流的信息。

2.png

FFmpeg使用语法

命令参考资料 推流参考资料 ffmpeg -i [输入文件名] [参数选项] -f [格式] [输出文件] 参数选项:

  • -an: 去掉音频
  • -acodec: 音频选项, 一般后面加copy表示拷贝
  • -vcodec:视频选项,一般后面加copy表示拷贝
  • -re ffmpeg读取文件有两种方式:一种是直接读取,文件被迅速读完;一种是按时间戳读取。一般都是按时间戳读取文件,

格式:

  • h264: 表示输出的是h264的视频裸流
  • mp4: 表示输出的是mp4的视频
  • mpegts: 表示ts视频流

命令行加入-re,表示按时间戳读取文件

示例

H264视频转mp4

ffmpeg -i test.h264 -vcodec copy -f mp4 test.mp4

重新调整视频尺寸大小(仅限Linux平台)

ffmpeg -vcodec mpeg4 -b 1000 -r 10 -g 300 -i ~/test.avi -s 800×600 ~/test-800-600.avi

把摄像头的实时视频录制下来,存储为文件(仅限Linux平台)

ffmpeg  -f video4linux -s 320*240 -r 10 -i /dev/video0 test.asf

udp视频流的推送

ffmpeg -re  -i 1.ts  -c copy -f mpegts   udp://192.168.0.106:1234```

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序你好

微服务和传统中间件平台

微服务与部署在中间件平台(esb、应用服务器)上的传统服务有何不同?什么是微服务体系结构模式,它解决了什么问题?本文将讨论所有这些重要的主题,并描述如何管理、管...

1302
来自专栏Python中文社区

用Python模拟登录学校教务系统抢课

-- Illustrations by Vladislav Solovjov --

5712
来自专栏文武兼修ing——机器学习与IC设计

AXI学习笔记-11.AXI总线结构2.AXI接口时序3.数据结构4.传输特性

握手信号包括VALID和READY信号,传输行为仅在VALID和READY同时有效时发生。其中:

5223
来自专栏贺贺的前端工程师之路

React Native  APP 添加自动更新

添加APP的自动,使用的第三方库是:react-native-code-push。新版本使用起来特别简单。添加步骤如下:

951
来自专栏安恒网络空间安全讲武堂

​writeup | 强网杯—Share your mind

0x01 分析题目 拿到题目后,首先先分析一下题目,发现有注册和登录,尝试登录成功后,发现如下几个页面 Overview // 显示当前自己所有发帖 Write...

3616
来自专栏bboysoul

conky主题Harmattan安装和介绍

Harmattan是一款conky主题,安装和使用都很简单,而且提供了很多样式,方便你选择。

2221
来自专栏黑白安全

iOS安全基础之钥匙串与哈希

本文最初是由Chris Lowe编写的,后来经过Ryan Ackermann(ios系统开发者)的修改,已经可以针对最新的Xcode 9.2,Swift 4,i...

1132
来自专栏互联网开发者交流社区

SEO-搜索引擎高级搜索指令

1735
来自专栏美团技术团队

WebView性能、体验分析与优化

在App开发中,内嵌WebView始终占有着一席之地。它能以较低的成本实现Android、iOS和Web的复用,也可以冠冕堂皇的突破苹果对热更新的封锁。 然而便...

1.1K12
来自专栏web开发

javascript设计模式——发布订阅模式

前面的话   发布—订阅模式又叫观察者模式,它定义对象间的一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知。在javascript开...

9396

扫码关注云+社区

领取腾讯云代金券