使用ffmpeg+nginx-rtmp搭建rtsp转rtmp服务(直播)Demo

以下内容主要涉及1个rtsp视频源,1至2台计算机/服务器

此处假设视频源地址为rtsp://username:[email protected]:554/h264/ch1/main/av_stream

计算机/服务器地址为192.168.1.4和192.168.1.5,分别部署视频转码和视频直播推流

目标数据流地址为rtmp://192.168.1.5/live/v1

使用工具:

ffmpeg-4.2.1

nginx-1.11.10(含nginx-rtmp-module)

vlc player

以上工具的安装可参考其他相关博客

 

1、视频转码

在192.168.1.4服务器上,使用shell运行如下命令:

ffmpeg -rtsp_transport tcp -i rtsp://username:[email protected]:554/h264/ch1/main/av_stream -flush_packets 1 -vf scale=800:-1 -probesize 32 -acodec copy -f flv rtmp://192.168.1.5:1935/live/v1

在以上命令中

-rtsp_transport tcp  表示强制使用TCP协议进行数据读取,如不进行该配置,则默认采用UDP协议进行读取,在网络状况糟糕或其他一些原因下,使用UDP可能导致数据包大量丢失。

-i rtsp://username:[email protected]:554/h264/ch1/main/av_stream,配置源数据流 

-vf scale=800:-1 ,配置转码后视频流的大小,如800:600标识800x600像素;800:-1表示宽度为800像素,高度则根据源视频流图像比例进行自动计算

-probesize 32,配置探测读入大小,默认值为5000000 ,ffmpeg会读取这些数量的数据进行分析,如该配置数值较大,可能导致打开rtmp流时有很大延迟

-acodec copy ,目标视频流采用与源视频流一样的音频解编码器

-f flv,配置输出格式,此处强制输出为flv 

2、nginx-rtmp

在192.168.1.5上安装好nginx后,对nginx.conf做如下配置:

rtmp {
    server {
        listen 1935;
        application live {
            live on;
        }
    }
}
http {
    server {
        listen       80;
        location / {
            root   html;
            index  index.html index.htm;
        }
        location /stat {
            rtmp_stat all;
            rtmp_stat_stylesheet stat.xsl;
        }
        location /stat.xsl {
            root /usr/local/nginx-rtmp-files/nginx-rtmp-module-master/;
        }
    }
}

其中1935为rtmp流端口,80为rtmp服务请求端口

启动nginx后,使用vlc player的网络串流访问功能访问rtmp://192.168.1.5:1935/live/v1即可

你可能感兴趣的:(杂项,nginx)