百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

通过FFmpeg将rtsp流摄像头视频转码为rtmp播放

ahcoder 2025-01-07 10:23 9 浏览

注意:用这种方式可以显示摄像头视频,但是存在诸多问题,无法正常投入使用,包括卡顿跟延迟,请想要借鉴的朋友慎重使用

目前需要用到技术有ffmpeg、nginx、rtsp以及rtmp协议,页面播放器VLC、flash、video.js都可以,在使用之前先对这些技术做一个大体的了解。

  • RTSP
    要知道什么是RTSP?点击链接
  • RTMP
    什么是RTMP?点击链接
  • ffmpeg
    什么是ffmpeg?点击链接
nginx
什么是nginx?点击链接
ffmpeg的下载地址:https://ffmpeg.zeranoe.com/builds/win64/static/
nginx的下载地址:http://nginx-win.ecsds.eu/download/
根据需要下载自己所需要的版本之后,接下来开始搭建服务器。
##FFmpeg配置##
将下载下来的ffmpeg的压缩文件解压,然后到C盘下面,新建一个文件夹,名称就是ffmpeg(在原来的路径也可以,只不过路径太麻烦了),然后将解压的文件全部复制到C://ffmpeg文件夹下面,然后右击我的电脑图标——选择属性,选择高级系统设置命令,然后在弹出的窗口中选择环境变量

在系统变量点击添加,新建一个Path变量,变量值为解压的根文件夹,然后打开bin,我的是在C盘下,所以就是:

然后点击确定,退出页面。
按win+R打开命令行窗口,输入ffmpeg -version,查看是否安装成功,如果成功的话,显示下图。

骤进行到这里,ffmpeg已经配置完成了。
##Nginx##
首先下载自己需要的版本,点击链接进行下载,将下载的文件解压到本地,然后再下载一个文件,nginx-rtmp-module-master,将此文件下载之后,解压放到上面的文件根目录下即可,下面是配置文件:
1、配置nginx文件,在conf文件夹里面有一个nginx-win.conf文件,将文件改名为nginx.conf(此处不改我也不知道可不可以,看到博客上这样写,我就改了),然后里面配置文件如下:

…… rtmp{ server{ listen 1935; application live{ live on; record off; } application hls{ live on; hls on; hls_path nginx-rtmp-module/hls; hls_cleanup off; } } } http{ …… }

原文中还有许多配置,但是我引用之后报错,不能够实现,所以我就讲其他的删除了,有需要的可以看一下原文这个地方的配置信息。


2、使用cmd命令启动nginx,在命令窗口进入之前解压的文件夹根目录,然后输入start nginx.exe,会弹出一个窗口,闪一下就关闭,如下所示

然后在任务管理器的进程管理中,可以看到nginx.exe正在运行,到此nginx搭建完毕。

3、在浏览器输入localhost或者127.0.0.1或者本机的IP地址,弹出如下页面表示搭建成功。

接下来要做的就是把rtsp流转换为rtmp流,可以在播放器中实时播放。
1、在cmd窗口中,打开nginx之后,

输入命令ffmpeg -i “rtsp://admin:123456@192.168.2.165:554/cam/realmonitor?channel=1&subtype=0&unicast=true&proto=Onvif” -vcodec copy -acodec copy -f flv “rtmp://[此处可以用localhost,可以用127.0.0.1,也可以用本机ip]:1935/live/”

,之后显示如下界面表示转码成功:

2、转码成功之后,将转码之后的地址,我这里是rtmp://127.0.0.1:1935/live,放在vlc播放器中查看实时视频

3、使用ffplay命令也可以查看,在命令行输入ffplay “rtmp://127.0.0.1:1935/live”,就会看到实时视频。
4、如果要在页面中使用的话,需要进行推流处理,就是将rtmp流通过命令进行推流操作,通过本条命令

(start ffmpeg -re -i “rtmp://localhost:1935/live” -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -acodec copy -f flv "rtmp://localhost:1935/hls/mystream -loglevel quiet)可以将rtmp流视频推送到rtmp://localhost:1935/hls/mystream,

这个地址后面的mystream可以随意写,但是要跟前面推流过程中写的一样;
5、页面中使用video.js来播放推送过来的rtmp视频,页面是要放到服务器中打开的,单独打开静态页面是没有用的。


6、还有一种方法,不需要转码两次,直接将rtsp视频转码为可以在页面播放的rtmp流,命令行为(ffmpeg -re -i “rtsp://admin:123456@192.168.2.165:554/cam/realmonitor?channel=1&subtype=0&unicast=true&proto=Onvif” -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -acodec copy -f flv “rtmp://localhost:1935/hls/mystream”)或者(ffmpeg -i “rtsp://admin:123456@192.168.2.165:554/cam/realmonitor?channel=1&subtype=0&unicast=true&proto=Onvif” -f flv -r 25 -s 640*480 -an “rtmp://localhost:1935/hls/mystream”),

即可在页面使用rtmp://localhost:1935/hls/mystream来播放视频。
页面部分具体代码:

<!DOCTYPE html> <html lang="en"> <head> <script src="jquery.js"></script> <script src="video.js"></script> <link href="video-js.css" rel="stylesheet"> <script> videojs.options.flash.swf = "video-js.swf"; </script> </head> <body> <video id="my-video" class="video-js vjs-default-skin vjs-big-play-centered" width="800" height="600"> <source src='rtmp://localhost:1935/hls/mystream' type='rtmp/flv'/> </video> <script> var player = videojs('my-video'); player.play(); </script> </body> </html>

总结;不积跬步无以至千里,学习+资料+文档+解答可以后台私信领取


相关推荐

Rocky Linux 9 系统下安装Nginx(linux怎么安装nginx)

RockyLinux9系统下安装Nginx大家好,我是星哥,Nginx凭借其高性能、低资源消耗以及优秀的反向代理能力,已成为Web服务部署的主流选择之一。本文将带你在RockyLinu...

你的网站正在裸奔!多个被99%开发者忽略的Nginx配置漏洞

"您的服务器已被攻陷,数据库正在导出"——当这条告警弹出时,老王正在茶水间泡咖啡。从黑客发起攻击到拿到核心数据,总共耗时4.7秒,比他点的奶茶送到还快。更讽刺的是,这个价值百万的漏洞并...

Rocky Linux Nginx 自动更新免费 SSL,全流程实战

Let’sEncrypt是由非营利性组织InternetSecurityResearchGroup(ISRG)推动的免费、自动化、开源的证书颁发机构(CA)。它采用ACME协议,让...

充分利用站长平台的改版工具降低更换域名的影响

boke112导航在前天进行了更换站名和域名,大家都知道更换域名后会带来严重的后果,几乎可以说一朝回到解放前。我也一直都以为只能等搜索引擎慢慢恢复,没想到百度站长平台已经有了这么好的改版工具让我们尽可...

别踩雷!外贸人选域名这事,真能决定你独立站是起飞还是扑街

有些事,看着不大,结果却能直接决定你是不是要走弯路。域名这事,就是其中一个。说句实话,我见太多外贸人,建站那一刻啥都不想,就随手敲了个域名,“反正能访问就行嘛”。可半年后一看——谷歌排名上不去、客户不...

站内SEO优化需要重视这16点才能提升网站排名!

1.H标签网站单个页面的H标签尽量控制在一定数量,常见的用法是h1标签1次,h2标签2次,h3标签用3词,也有很大部分的网站不用h1标签直接使用h2标签,这种情况常见于门户站、新闻站等。2.Alt描述...

Nginx反向代理之proxy_redirect指令

proxy_redirect该指令是用来重置头信息中的"Location"和"Refresh"的值。语法:proxy_redirectredirectreplace...

2023近期前端面试遇到的题(前端初级)

以下面试题不分先后顺序1、vue实现双向数据绑定原理是什么?八股文不想写了自己百度吧...2、v-model语法糖是怎么实现的3、Hash和history有什么区别Hash模式1、定义hash模式是...

Nginx报404错误的详细解决方法(nginx报错401)

最近打开网站看看结果提示:nginx404notfound,所以这篇文章主要给大家介绍了关于Nginx报404错误的简单解决方法,文中通过图文介绍的非常详细,需要的朋友可以参考下宝塔服务器面板,...

基于windows的nginx基础使用(windows nginx常用命令)

 Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务。易用性强,学习成本低,可维护性高。传送门。欢迎使用  下载nginx/Windows-1.6.3的版...

网站为什么要改版,改版网站需要注意什么

在平时接触网站项目的时候,会遇到一些客户说,我想要改版网站,网站页面风格需要改变,其实这个不仅是设计页面,前端接入,后台开发代码也要重写,相当于就是重新建站,做个新的设计风格的网站。网站为什么要改版?...

nginx 代理转发 http https 基本用法

nginx配置http最简单的用法;server{#监听的端口listen80;#绑定的域名,多个用空格分开即可。server_nameprvt.c...

【Docker系列】最好用的反向代理 ——Nginx Proxy Manager

1.介绍访问VPS或者网站服务器需要域名+端口号,之所以日常使用不显示是因为端口80(http访问端口),端口443(https访问端口),会自动加上该默认端口。NginxProxyManag...

别小看301重定向,玩明白了SEO真能快人一步

在做SEO的路上,有些“老套路”看着平平无奇,但用对了真能让你排名超车。今天想跟你聊的就是这么一个老牌选手——301重定向。很多人一听到“301”就头疼,要么觉得是服务器的事,太技术;要么觉得用处不大...

解析:网站降权后是否可以启动新域名

站长们都有过网站降权的经历,很多人会选择重新做站,抛弃老域名,觉得降权就是被百度打入谷底、无法翻身。张玉淦博客之前也被降权,排除优化过度,原因很简单,修改了标题,添加“福建”两个字,结果被搜索引擎盯上...