• 自建rtmp、rtsp媒体服务器及遇到的问题


    我是这方面的小白,本文旨在记录自己搭建服务器的过程。一是给自己就下记录以便下次搭建;二是希望能帮助到其他有相同需求的朋友。

    我用OBS向服务器推流,这个在OBS上配置就可以

    【一、RTMP推流、拉流】

    先说rtmp吧,这个我参考了下面这篇文章:

    https://blog.csdn.net/m0_51139226/article/details/124430275

    1、先下载带rtmp模块的nginx(选择后缀为Gryphon的版本),很多文章让自己安装nginx-module模块,我尝试过没有成功。应该是我哪里做的有问题,这个以后有机会再尝试解决吧。

    下载地址如下:

    http://nginx-win.ecsds.eu/download/

    2、解压后更将文件名从 nginx-rtmp-module-master 更改为 nginx-rtmp-module

    3、修改nginx的配置文件,在conf目录下的nginx-win.conf。在文件最后加上rtmp的配置,配置如下:

    rtmp {

        server {

            listen 1935;

            chunk_size 4000;

            application live {

                 live on;

            }

        }

    }

    上面配置中live是流的目录,推流和拉流的时候都要从这个目录里进行。

    4、下面启动nginx就可以了,这里注意要在启动命令中声明要使用的配置文件nginx-win.conf。我是用CMD命令启动的,所以要到nginx的目录下执行:

    5、到此就可以测试rtmp的推流和拉流了,延迟大概2-3秒,我的场景还能接受。如下图:

    我在测试中发现个问题,有时候打开媒体播放器拉取rtmp流时只能听到音频,但是看不到视频。不知道是什么原因,但是重新拉取几次就好了。希望各位大神能给解释一下,谢谢啦!

    【二、RTMP推流、RTSP拉流】

    1、先下载rtsp-simple-server,下载地址如下:

    Releases · aler9/rtsp-simple-server · GitHub

    2、解压缩,然后双击里面的rtsp-simple-server.exe就启动了

    从上面图中可以看出,rtsp-simple-server除了RTSP之外还支持RTMP和HLS,但是我遇到一些问题,这个咱们后面再细说

    3、在OBS上配置一下,把RTMP流推送到rtsp-simple-server。这里吐槽一下,OBS只能推RTMP,如果能直接推RTSP,甚至能直接做RTSP的服务器就完美了。

    4、在媒体播放器上直接打开rtsp://192.168.1.195:8554/live就可以了。延迟大概在8-10秒,非常严重,也不知道怎么能优化,还是要向各位大神求助了。

    5、实现到上面这一步就已经成功了,但是这里要把我遇到的一些问题记录下来,看看大家能不能一起讨论解决。

    问题是:从rtsp-simple-server拉取RTMP流的时候,会出现播放几秒就断开的情况。断开的时候rtsp-simple-server会报错“destroyed (muxer error: DTS is not monotonically increasing, was 9.2s, now is 9.032666667s)”。从rtsp-simple-server拉取hls的时候也会报相同的错。

    我查了一下,说是“DTS不是单调增加的”。Github上有这样一段描述:

    OBS using the Nvidia encoder NVENC results in an error message (with different times of course) "closed (DTS is not monotonically increasing, was 3.9s, now is 3.799333334s)". This happens a few seconds after the stream is played out with any rtmp capable media player.

    I tested MPC-HC 1.9.23 and VLC 3.0.17.2. Also tested multiple Nvidia drivers (latest versions 517.46, previous versions 516.94 and 516.59), and multiple OBS version including the latest 28.0.2. Tested all sorts of Nvidia encoder settings in OBS, VBR, CBR, CQP, keyframe at 0 or 2, lookahead and visual tuning enabled or disabled. Tested on different computers, one using a GTX1080ti videocard and one using an RTX3090.

    That all didn't make any difference. Using the x264 encoder in OBS works fine. Server version before 19.0.1 work fine.

    下面还有一大堆各种各样的回复,提到的几种方式都尝试过了也没有解决。所以看看大家有没有解决这个问题的经验,希望不吝赐教。谢谢!

  • 相关阅读:
    iOS程序内语言切换使用小结
    R语言因子数据的表格和列联表(交叉表)生成:使用table函数将单个因子变量呈现为表格、两个因子变量呈现为列联表
    redis知识点整合
    linux学习3 — ubuntu中的文件
    在中国,技术到底有多有用?
    MAC如何在根目录创建文件
    Excel数据处理:动态数据分析报表、单元格数字格式、使用排序工具
    【Java分享客栈】我曾经的两个Java老师一个找不到工作了一个被迫转行了
    11返场钜惠,格式转换、图片/视频压缩免费小技巧
    物联网与边缘计算的结合
  • 原文地址:https://blog.csdn.net/ziele_008/article/details/127664942