最近有一个项目, 进行步态识别的时候,同时需要显示摄像的实时画面。对于 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踩下的坑的更多相关文章

  1. 关于rtsp转码rtmp播放的两种方式,客户端直接转,远程服务器转

    需求 一.场景 用户多家门店有监控探头,设备是海康的和大华的.用户总部和门店不在一个网络下,并且总部要能实时调用查看门店监控,和门店回放画面.我们知道监控摄像机获取的视频是 rtsp 流的格式. 只能 ...

  2. Linux安装mysql以及安装时踩下的坑

    安装: 检测是否已经安装了mysql rpm -qa | grep mysql 如果已经安装了,将其卸载,如: rpm -e --nodeps  mysql-libs-5.1.71-1.el6.x86 ...

  3. 基于rtmp+nginx 、vlc实现FFmpeg推流与wpf端拉流

    这周在研究基于rtmp+nginx直播流的实现,现总结如下: 0.所需文件: 链接:https://pan.baidu.com/s/1U5gsNI8Rcl684l5gVL6swg 提取码:dli9 1 ...

  4. Java 监控直播流rtsp协议转rtmp、hls、httpflv协议返回浏览器

    Java 监控直播流rtsp协议转rtmp.hls.httpflv协议返回浏览器 目录 需求背景: 一:了解音视频流协议: 二:方案一 rtsp 转rtmp 1.下载nginx + nginx-rtm ...

  5. saltstack之(九)配置管理源码部署Nginx

    场景:rpm包安装的nginx服务,无法满足定制模块的需求,故线上环境使用nginx源码进行安装.本片文章详细介绍如何使用saltstack的配置管理功能实现nginx软件的源码安装. 下载源码:pc ...

  6. 源码安装nginx以及平滑升级

                                                           源码安装nginx以及平滑升级                               ...

  7. Nginx环境下配置PHP使用的SSL认证(https)

    最近一段时间发现好多网站都从http协议变成了加密的https协议,比如说百度.吾志等等.https看起来比http高端了好多,而且在不同的浏览器向上还会显示出不同于http的URL展示效果(比如说c ...

  8. 【转】Nginx windows下搭建过程

    Nginx windows下搭建过程 内容列表: 简要介绍 下载安装 配置测试 一.简要介绍 Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器, ...

  9. 源码安装Nginx以及用systemctl管理

    一.源码安装Nginx: 先安装gcc编译器(安装过的可以忽略) [root@localhost ~]# yum -y install gcc gcc-c++ wget 进入src目录 [root@l ...

随机推荐

  1. CSS(六)

    CSS权重 CSS权重指的是样式的优先级,有两条或多条样式作用于一个元素,权重高的那条样式对元素起作用,权重相同的,后写的样式会覆盖前面写的样式. 权重的等级 可以把样式的应用方式分为几个等级,按照等 ...

  2. CSS(四)

    css元素溢出 当子元素的尺寸超过父元素的尺寸时,需要设置父元素显示溢出的子元素的方式,设置的方法是通过overflow属性来设置. overflow的设置项: 1.visible 默认值.内容不会被 ...

  3. PHP文件上传大小限制问题

    一.Thinkphp方面限制  $upload->maxSize   =     31457280 ; //设置附件上传大小 二.七牛方面限制: 'UPLOAD_FILE_QINIU' => ...

  4. PHP 常用设计模式 (转载)

    1.单例模式 单例模式顾名思义,就是只有一个实例.作为对象的创建模式, 单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 单例模式的要点有三个: 一是某个类只能有一个实例: ...

  5. 蓝桥杯-加法变乘法(java)

    蓝桥杯第六届省赛题目-加法变乘法(java) 题目: 我们都知道:1+2+3+ ... + 49 = 1225 现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015 比如: 1+2+3+... ...

  6. Python练手例子(7)

    37.对10个数进行排序. 程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,下次类推,即用第二个元素与后8个进行比较,并进行交换. #python 3.7 if __n ...

  7. poj 3422 最小费用流

    如果不是从费用流区做这个题几乎不会想到用费用流 点有权值很容易想到拆点 问题是求最大sum ...  把权值取负 这样最小费用流的相反数就是最大sum 源点S汇点T k为移动次数 矩阵中的点拆成入点出 ...

  8. 使用 JProbe 调试 Linux 内核(转)

    https://liam.page/2018/04/28/debug-in-Linux-kernel-jprobe/

  9. C# Collection 排序

    Collection<int> aa = new Collection<int>(); aa.Add(1); aa.Add(2); aa.Add(3); aa.Add(1); ...

  10. 审核被拒Guideline 2.1 - Information Needed we are unable to find 账号登录 option

    Guideline 2.1 - Information Needed We were unable to sign in to review your app with the demo accoun ...