文章目录
- 引言
- 1、安装FFmpeg
- 2、安装Nginx服务器
- 3、实现本地视频推流服务
- 4、使用VLC或PotPlayer可视化播放器播放视频
- [5、RTSP / RTMP系列文章](#5、RTSP / RTMP系列文章)
引言
RTSP和RTMP视频流的区别
- RTSP (Real-Time Streaming Protocol)实时流媒体协议。 RTSP定义流格式,流数据经由RTP传输;RTSP实时效果非常好,适合视频聊天,视频监控等方向。
- RTMP(Real Time Message Protocol)实时消息协议。 用来解决多媒体数据传输流的多路复用(Multiplexing)和分包(packetizing)的问题,优势在于低延迟,稳定性高,支持所有摄像头格式,浏览器加载 flash插件就可以直接播放。
- RTSP是服务器端推送到客户端,而RTMP是点对点传输。
- RTSP是基于UDP或TCP,传输数据时具有较小的延迟,可用于实时流媒体的传输。
- RTMP是基于TCP,具有高可靠性,能够自动重连,即使在网络环境不稳定时也能够保证流媒体传输的质量。
- RTSP也支持多种编码格式,但通常只用于传输单个音视频轨道。RTMP支持多种编码格式,包括H.264和AAC等,支持多个音视频轨道。
- RTSP旨在建立和维护原始数据源(客户端)和流服务器之间的连接,允许控制流媒体服务器内的娱乐和通信系统,允许暂停和播放功能。RTMP支持整合文本、视频和音频,支持MP3和AAC音频流,也支持MP4、FLV和F4V视频。
推流和拉流的区别
- 推流:指的是将摄像头、屏幕等设备上的数据通过网络传输到服务器,并由服务器进行处理、存储或直播。比如,在进行网络直播时,主播需要将自己的摄像头数据通过网络上传到服务器,这个过程就是推流。
- 拉流:指的是从服务器上获取视频流并在本地播放的过程,也叫做播放。 比如,在观看网络上的直播时,用户需要从服务器上获取视频流才能进行观看,这个过程就是拉流。
FFmpeg概念
FFmpeg是将音频和视频转为流的开源计算机程序。
EasyDarwin实现RTSP视频流服务步骤
- 安装FFmpeg
- 安装EasyDarWin
- 启动本地摄像头
- 使用VLC或PotPlayer可视化播放器播放视频
1、安装FFmpeg
下载FFmpeg
并配置环境 ,执行 ffmpeg -version
测试安装是否成功。
成功配置ffmpeg版本:
2、安装Nginx服务器
- Nginx 是一个高性能的HTTP和反向代理轻量级web服务器,同时也提供了IMAP/POP3/SMTP服务。
- 在Nginx官网上下载的Nginx是不带RTMP模块的。所以本文需要下载Gryphton版本的Nginx服务器 ,即
RTMP服务器
就是基于Nginx
开发的module
。 nginx 1.7.11.3 Gryphon
该版本Nginx包含RTMP组件,通过RTMP组件,提供流媒体服务,让Nginx成为RTMP流媒体服务器。- Nginx------其他window版本下载
实现
1、下载Nginx
- 下载[nginx 1.7.11.3 Gryphon](http://nginx-win.ecsds.eu/download/nginx 1.7.11.3 Gryphon.zip),解压
nginx 1.7.11.3 Gryphon.zip
2、下载trmp压缩包
- 下载nginx-rtmp-module,将
nginx-rtmp-module-master.zip
解压到nginx 1.7.11.3 Gryphon
目录中,并重命名文件夹为nginx-rtmp-module
在这里插入图片描述](https://img-blog.csdnimg.cn/direct/f1e7c424a9244617882f38448d7042ee.png)
3、进入nginx 1.7.11.3 Gryphon文件夹的conf目录下, 创建并编辑 nginx.conf 文件
java
worker_processes 2;
events {
worker_connections 8192;
}
rtmp {
server {
listen 1935;#监听端口,若被占用,可以更改
chunk_size 4000;#上传flv文件块儿的大小
application live { #创建一个叫live的应用
live on;#开启live的应用
allow publish 127.0.0.1;#
allow play all;
}
}
}
http {
include mime.types;
default_type application/octet-stream;
sendfile off;
#tcp_nopush on;
server_names_hash_bucket_size 128;
## Start: Timeouts ##
client_body_timeout 10;
client_header_timeout 10;
keepalive_timeout 30;
send_timeout 10;
keepalive_requests 10;
## End: Timeouts ##
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
}
}
4、启动RTMP服务器
打开CMD
,进入nginx 1.7.11.3 Gryphon
目录下,执行如下指令,检查nginx的配置文件是否正确。
cmd
nginx.exe -t
启动nginx服务器
start nginx 命令的作用是载入缺省./conf/nginx.conf配置文件,启动nginx。
cmd
start nginx
采用别的配置去开启nginx命令如下
cmd
nginx.exe -c conf\nginx-win.conf
如何停止nginx服务器?
打开cmd,输入如下命令
cmd
taskkill /f /im nginx.exe
3、实现本地视频推流服务
步骤
- 准备一个视频放到FFmpeg文件夹下
- FFmpeg实现推流
实现
1、准备一个视频放到FFmpeg\bin文件夹下
2、FFmpeg实现推流
语法
cmd
ffmpeg -re -stream_loop -1 -i 视频文件.mp4 -c copy -f flv 播放地址
播放地址根据nginx.conf文件一一对应,如本文实现
推流地址为 rtmp://127.0.0.1:1935/live/test
配置好FFmpeg环境,直接打开 cmd
输入如下命令,如果没配置FFmpeg环境,需要来到FFmpeg\bin目录下。
cmd
ffmpeg -re -stream_loop -1 -i 测试视频.mp4 -c copy -f flv rtmp://127.0.0.1:1935/live/test
要想在推流指令中使用其它推流目录,比如改为使用" mydir ",就在 nginx.conf1
修改 live ==》 mydir
可以看到这里的数值在动,就说明推流成功了
4、使用VLC或PotPlayer可视化播放器播放视频
- 方式一:下载PotPlayer播放器,任意一个浏览器,输入播放地址
rtmp://127.0.0.1:1935/live/test
,回车,打开PotPlayer播放。 - 方式二:打开PotPlayer,右下角选择【添加】---【添加链接】---【填写播放地址】
3.方式三:下载 VLC播放器,选择【媒体】---【打开网络串流】---【网络】,粘贴地址,【播放】即可。