视频直播:使用ffmpeg推送到nginx-rtmp实现rtsp转换rtmp

文章目录

  • 前言
  • 一、ffmpeg是什么?
  • 二、使用步骤
    • 1.nginx安装
    • 2.ffmpeg安装
  • 三、开始配置nginx
  • 四、ffmpeg开始推送视频流
  • 五、ffmpeg常用命令
  • 总结


前言

在互联网中,有很多摄像头都需要涉及到录屏,直播等功能。但是大部分设备厂商提供的摄像头视频流格式都是rtsp的,导致浏览器或者小程序不能直接使用,本片文章将演示如果使用nginx-module-rtmp搭建流媒体服务,然后通过ffmpeg推送视频流,实现rtsp转换成rtmp


提示:以下是本篇文章正文内容

一、ffmpeg是什么?

Fmpeg 是领先的多媒体框架,能够解码、编码、转码、混合、解密、流媒体、过滤和播放人类和机器创造的几乎所有东西。它支持最晦涩的古老格式,直到最尖端的格式。无论它们是由某个标准委员会、社区还是公司设计的。它还具有高度的便携性。

二、使用步骤

1.nginx安装

1.1 nginx安装请参考nginx安装链接
1.2 nginx添加 nginx-rtmp模块 链接

2.ffmpeg安装

2.1 ffmpeg安装请参考ffmpeg安装链接

三、开始配置nginx

worker_processes  1;
events {
    worker_connections  1024;
}

rtmp {  
    server {  
        listen 1935;      #监听的端口号
        application myapp {     #自定义的名字
            live on;  
       }  
        application hls {  
            live on;  
            hls on;  
            hls_path /hls;   
            hls_fragment 1s;
            hls_playlist_length 3s;  
       }  
    } 
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;


    server {
        listen       80;
        server_name  localhost;
        # ffmpeg生成hls流的http访问配置
        location / {
            #若nginx\conf\mime.types中没有配置如下type,请加上,或直接在mime.types加
             types{
                application/vnd.apple.mpegurl m3u8;
                #application/x-mpegURL m3u8;
                video/mp2t ts;
             }
            root html;
            #add_header Cache-Control no-cache;
            add_header Access-Control-Allow-Origin *;
        }



        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }
}

四、ffmpeg开始推送视频流

在linux执行命令

ffmpeg -i "你的rtsp视频流地址" -vcodec copy -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 4000x3000 -q 10 -f flv "rtmp://你的rtmp需要转换到的地址/hls/aa"

你的rtsp视频流地址:指摄像头rtsp地址 你的rtmp需要转换到的地址:你需要把rtmp推送的地址,外网可访问

五、ffmpeg常用命令

ffmpeg常用命令

总结

本片文章难点在于ffmpeg的安装和环境配置,当所有配置成功之后ffmpeg即可推流,但是推流的过程中会消耗服务器的CPU,不使用的时候需要关闭。 转换过后,视频流会有延迟,可根据ffmpeg使用不同命令进行调优

你可能感兴趣的:(nginx+ffmpeg,视频流,nginx,ffmpeg,rtmp,java,linux)