nginx+ffmpeg|视频直播(使用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安装 【nginx+ffmpeg|视频直播(使用ffmpeg推送到nginx-rtmp实现rtsp转换rtmp)】2.1 ffmpeg安装请参考ffmpeg安装链接
三、开始配置nginx
worker_processes1; events { worker_connections1024; }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 { includemime.types; default_typeapplication/octet-stream; sendfileon; server { listen80; server_namelocalhost; # 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_page500 502 503 504/50x.html; location = /50x.html { roothtml; }} }

四、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使用不同命令进行调优

    推荐阅读