C# rtsp 转码rtmp nginx踩下的坑
最近有一个项目, 进行步态识别的时候,同时需要显示摄像的实时画面。对于 Winform 显示画面,之前针对 rtmp 流的时候,是先写一个HTML 网页加载视频流,然后在IIS上发布,将地址直接赋值给winform中 WebBrowser 控件的Url值即可。
this.webBrowser1.Url = new Uri("http://192.168.0.217:8063/player.html");
针对HTML部分,网上有很多开源的Demo,已封装好,没啥值得研究的事情。本来顺顺利利,而现在是海康原生的 rtsp 流,Winfrom 没啥好的解决方案,于是首先想到如何将 rtsp 流转成rtmp流 。于是乎采坑之路就此开始。首先是下载ffmpeg ,然后搭建nginx 服务器。进行配置,再在dos界面执行相关指令,看起来很简单,实际上坑贼多。针对 ffmpeg 来说,还很简单,直接下载即可,然后将exe的同级目录的路径拷贝到配置变量中 。再管理员身份打开cmd后,执行 ffmpeg -version 出现长串字符即为成功
重点是nginx服务器的配置。 之前没听过这个,虽然网上很多相关的帖子,五花八门。很多人给的教程不全,或者上来就是改代码。对于小白来说确实不知所云。在尝试了多个版本之后,找到了一个比较靠谱的帖子,这里小小感谢下,Windows下用FFmpeg+nginx+rtmp搭建 ,按照步骤下来,nginx 还是没有启动,最后百度,在nginx-win-rtmp.conf 文件中,需要加入rtmp的信息,红字部分
events {
worker_connections 8192;
# max value 32768, nginx recycling connections+registry optimization =
# this.value * 20 = max concurrent connections currently tested with one worker
# C1000K should be possible depending there is enough ram/cpu power
# multi_accept on;
}
rtmp {
server {
listen 1935;
chunk_size 4000;
application live {
live on;
}
}
}
加入之后,仍然无法启动,查看log发现是默认的80端口被占用,于是乎按照网上小伙伴绝大多数给的说法,先查询这些80端口被那些程序占用,执行命令: netstat -aon|findstr "80" ,然后记录下PID,然后依次在进程中查看PID,找到源头,最后关闭这些万恶的源头。
一瞅,发现这么多的80端口列表,很多还是不能关闭的,于是乎这条路又断了,后来一项,把端口改成其他的数字不就可以。于是忽,再次进入 nginx-win.conf、nginx-win-rtmp.conf 中将server中 listen 值由 80改成84 后,再次执行命令
dos界面,管理员进入nginx.exe同级目录后,执行 nginx.exe -c conf\nginx-win-rtmp.conf 后,终于成功了,在任务管理器中发现了nginx 的进程。这里nginx启动好以后,接下来就是执行推流任务。同样用管理员身份进入cmd,执行
ffmpeg -i "rtsp://admin:admin@192.168.0.246:554/Streaming/Channels/1?transportmode=unicast" -f flv -r -s 640x360 -an rtmp://localhost:1935/live/room
注意,这里有两个坑,一个是必须要管理员打开cmd,还有一个是后面的 -an rtmp://localhost:1935/live/room(自行编辑) ,和前面的是一条完整的命令,很多帖子写的是两行,这样直接粘贴过去的话,同样执行失败。最后成功时,界面如下
这个会一直往下跑,代表着一直在推 啊推啊流,(不能关闭)这样一番操作之后,rtsp流就成功的转换为了rtmp流。于是乎winform界面就可以操作此流进行播放.......
这个只是小小的研究一下,正常环境肯定不能这样进行测试,贼难用,后来用了其他的第三方dll插件库引用来处理
C# rtsp 转码rtmp nginx踩下的坑的更多相关文章
- 关于rtsp转码rtmp播放的两种方式,客户端直接转,远程服务器转
需求 一.场景 用户多家门店有监控探头,设备是海康的和大华的.用户总部和门店不在一个网络下,并且总部要能实时调用查看门店监控,和门店回放画面.我们知道监控摄像机获取的视频是 rtsp 流的格式. 只能 ...
- Linux安装mysql以及安装时踩下的坑
安装: 检测是否已经安装了mysql rpm -qa | grep mysql 如果已经安装了,将其卸载,如: rpm -e --nodeps mysql-libs-5.1.71-1.el6.x86 ...
- 基于rtmp+nginx 、vlc实现FFmpeg推流与wpf端拉流
这周在研究基于rtmp+nginx直播流的实现,现总结如下: 0.所需文件: 链接:https://pan.baidu.com/s/1U5gsNI8Rcl684l5gVL6swg 提取码:dli9 1 ...
- Java 监控直播流rtsp协议转rtmp、hls、httpflv协议返回浏览器
Java 监控直播流rtsp协议转rtmp.hls.httpflv协议返回浏览器 目录 需求背景: 一:了解音视频流协议: 二:方案一 rtsp 转rtmp 1.下载nginx + nginx-rtm ...
- saltstack之(九)配置管理源码部署Nginx
场景:rpm包安装的nginx服务,无法满足定制模块的需求,故线上环境使用nginx源码进行安装.本片文章详细介绍如何使用saltstack的配置管理功能实现nginx软件的源码安装. 下载源码:pc ...
- 源码安装nginx以及平滑升级
源码安装nginx以及平滑升级 ...
- Nginx环境下配置PHP使用的SSL认证(https)
最近一段时间发现好多网站都从http协议变成了加密的https协议,比如说百度.吾志等等.https看起来比http高端了好多,而且在不同的浏览器向上还会显示出不同于http的URL展示效果(比如说c ...
- 【转】Nginx windows下搭建过程
Nginx windows下搭建过程 内容列表: 简要介绍 下载安装 配置测试 一.简要介绍 Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器, ...
- 源码安装Nginx以及用systemctl管理
一.源码安装Nginx: 先安装gcc编译器(安装过的可以忽略) [root@localhost ~]# yum -y install gcc gcc-c++ wget 进入src目录 [root@l ...
随机推荐
- ActiveMq实例
1.发布端 import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax.jms.DeliveryMode ...
- 转 mysql Next-Key Locking
原文:http://dev.mysql.com/doc/refman/5.5/en/innodb-next-key-locking.html 14.5.2.5 Avoiding the Phantom ...
- 社团的CTF逆向题WriteUp
最近社团弄了CTF比赛,然后我就帮忙写了逆向的题目,这里写一下WriteUp,题目和源码在附件中给出 一个简单的逆向:one_jmp_to_flag.exe 这题算是签到题,直接OD智能搜索就完事了, ...
- linux下安装前端程序员必备软件
startx进入桌面后,ctrl+alt+t调出终端.安装完成以后重启在软件ubuntu软件中找到软件启动或通过终端输入命令找到,锁定到启动器. 1.首先安装chrome(64位) cd /tm ...
- MVC 向页面传值方式总结(2)
MVC 向页面传值方式总结 总结发现ASP.NET MVC中Controller向View传值的方式共有6种,分别是: ViewBag ViewData TempData 向普通View页面传一个Mo ...
- raycast 一小段距离碰撞到的poly
dtNavMeshQuery::raycast(dtPolyRef startRef, const float* startPos, const float* endPos, const dtQuer ...
- java--List、Set、Map的基础
好像面试很多面试官都喜欢问这它们的一些问题,所以在这里我稍微总结一下,并把大佬们的文章链接贴在后面. 首先我们借鉴了https://www.cnblogs.com/SnowingYXY/p/67273 ...
- linux 的基础命令
date 查看时间 cal 查看日历 cal 2009 cal 10 2019 ls 查看目录下的内容 ls -alh tree 以树的形式查看目录内容 bc 计算器 M ...
- vue中router.go、router.push和router.replace的区别
router.go(n) 这个方法的参数是一个整数,意思是在history记录中向前或者后退多少,类似window.history.go(n) router.push(location) 想要导航到不 ...
- Visual Studio Code for mac 设置中文
1,mac系统VScode设置中文 macOS 快捷键:command + shift + p 输入搜索 configure language 1.Ctrl+Shift+P 打开命令 2. ...