简介
RTMP推流器(Streamer)的在流媒体系统中的作用可以用下图表示。首先将视频数据以RTMP的形式发送到流媒体服务器端(Server,比如FMS,Red5,Wowza等),然后客户端(一般为Flash Player)通过访问流媒体服务器就可以收看实时流了。
1、首先:运行本程序之前需要先运行RTMP流媒体服务器,并在流媒体服务器上建立相应的Application。
2、推流的同时,客户端(例如 Flash Player, FFplay等等)拉流收看推送的直播流(服务器不能长时间保存视频数据)
例如:
1、推流:ffmpeg -re -i cuc_ieschool.flv -f flv rtmp://192.168.126.128 /live/camera
ffmpeg RTMP推送命令举例
2、拉流:VLC打开网络串流:rtmp://192.168.126.128/live/camera
封装格式
RTMP采用的封装格式是FLV。因此在指定输出流媒体的时候需要指定其封装格式为“flv”。
比如在推流的时候添加传参命令: -f flv
同理,其他流媒体协议也需要指定其封装格式。例如采用UDP推流时指定封装格式为“mpegts”。
c代码实现推流—最简单的基于FFmpeg的推流器(以推送RTMP为例)—做了延迟→→按照视频实际的帧率发送
c代码实现收流—最简单的基于FFMPEG的推流器附件:收流器
↓下面则是使用ffmpeg指令来实现推流 用vlc收流
1. 安装nginx的依赖包
# 查看zlib是否安装
dpkg -l | grep zlib
# 解决依赖包openssl安装
sudo apt-get install openssl libssl-dev
# 解决依赖包pcre安装
sudo apt-get install libpcre3 libpcre3-dev
# 解决依赖包zlib安装
sudo apt-get install zlib1g-dev
1.5为nginx添加rtmp支持
为了增加对rtmp的支持,下载nginx-rtmp-module,地址:https://github.com/arut/nginx-rtmp-module#example-nginxconf,这个是个开源项目。下载后解压放到一个目录(如/home/user/nginx-rtmp-module),后面配置nginx要用到这个位置
2. 官网下载nginx
//下载nginx
wget http://nginx.org/download/nginx-1.13.1.tar.gz
//解压nginx
tar -xzvf nginx-1.13.1.tar.gz →得到文件夹nginx-1.13.1
3、安装nginx
//配置nginx
cd nginx解压文件夹
./configure --prefix=/usr/local/nginx --add-module=/home/user/nginx-rtmp-module(所添加的tmrp解压地址) --with-http_ssl_module
//编译nginx
make
//安装nginx
make install
3.5修改nginx配置文件nginx.conf进行配置(重启nginx后生效)
gedit /usr/local/nginx/conf/nginx.conf
//linux下的纯文本编辑器 弹出文本编辑界面进行修改,类似txt编辑方式
下面是修改后的nginx.conf :
1在里面加入rtmp的配置
2.使nginx能具有直播状态监听的功能
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
#使nginx增加rtmp功能。
rtmp {
#协议名称
server {
#说明内部中是服务器的相关配置
listen 1935; #rtmp服务监听端口
application live {
#直播服务器
live on; #live on表示开启实时/启用rtmp直播
#allow play all; #这4行是用于录制的
#record all;
#record_path /opt/video/record; #录制视频的存放路径(记得开启写权限)。
#r添加后重新启动nginx后重新推流,查看/opt/video/record路径下的文件可以看到多了一个test+时间戳命名的flv文件,