AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题

问题[rtmp](server)

Martin Hope
Rogerwilcos
Asked: 2021-01-22 16:20:50 +0800 CST

NGINX rtmp 到 hls 设置与 video.js 缓冲

  • 1

我正在尝试为在本地网络上运行的本地学校设置流媒体服务器。我在虚拟机上设置了 Ubuntu 18.04,并在服务器上为其提供了自己的专用 1 Gigabit 连接。它有 4 个处理核心和 8GB 内存。学校所有的交换机都是1G的。我使用 GoPro 通过 RTMP 向服务器发送 480p 视频(运行 NGINX 和 rtmp 模块)。在同一台服务器上,我将 video.js 配置为查看流。

当我们运行 5 到 10 个浏览器时,它看起来还不错。今天他们开了 50-60,这大约是我们将看到的最大值。当我们这样做时,慢慢地一些浏览器开始“缓冲”并且会一遍又一遍地做。它几乎看起来每 2 秒执行一次非常快。

我检查了服务器,发现 CPU、内存、磁盘甚至网络都没有受到限制。尽管 VMware 确实显示服务器达到约 120mbps 并达到峰值。

这就是我的 nginx.conf 的样子。我该怎么做才能让它发挥作用。我无法弄清楚这是否只是带宽过多,或者是否是新玩家正在尝试从播放列表播放并阻止 RTMP 到 HLS 转换的过程。希望这种思路是有道理的。

server {
        listen 8080;

        location / {
            # Disable cache
            add_header 'Cache-Control' 'no-cache';

            # CORS setup
            add_header 'Access-Control-Allow-Origin' '*' always;
            add_header 'Access-Control-Expose-Headers' 'Content-Length';

            # allow CORS preflight requests
            if ($request_method = 'OPTIONS') {
                add_header 'Access-Control-Allow-Origin' '*';
                add_header 'Access-Control-Max-Age' 1728000;
                add_header 'Content-Type' 'text/plain charset=UTF-8';
                add_header 'Content-Length' 0;
                return 204;
            }

            types {
                application/dash+xml mpd;
                application/vnd.apple.mpegurl m3u8;
                video/mp2t ts;
            }

            root /var/stream;
        }
}
rtmp {
        server {
                listen 1935;
                chunk_size 4096;

                application live {

                        record off;
                        live on;
                        # Turn on HLS
                        hls on;
                        hls_path /var/stream/hls/;
                        hls_fragment 3;
                        hls_playlist_length 60;
                        # disable consuming the stream from nginx as rtmp
                        deny play all;

                   }
        }

}

这是播放器的html:

<video-js id="live_stream" class="video-js vjs-fluid vjs-default-skin vjs-big-play-centered" controls preload="auto" autoplay="true" width="auto" height="auto" poster="http://192.168.5.8/poster.jpg">
<source src="http://192.168.5.8:8080/hls/.m3u8" type="application/x-mpegURL">
    <p class='vjs-no-js'>
      To view this video please enable JavaScript, and consider upgrading to a web browser that
      <a href='https://videojs.com/html5-video-support/' target='_blank'>supports HTML5 video</a>
    </p>
</video-js>
linux ubuntu nginx rtmp
  • 1 个回答
  • 1839 Views
Martin Hope
Wilson Luniz
Asked: 2020-09-18 08:01:15 +0800 CST

数据包中的 RTMP / TCP 额外字节?

  • 0

我正在分析 RTMP(实时消息传递协议)并发现一些非常奇怪的东西。在其中一个捕获的数据包中,TCP 有效负载长度比预期的要长。这是 Wireshark 中的数据包: Wireshark TCP 有效负载视图

该C3字节使 RTMP 比预期的要长。在 RTMP 有效负载视图中令人惊讶的是:

Wireshark RTMP 有效负载视图

如您所见,该C3字节在 RTMP 视图中消失了。但它是 TCP 有效负载的一部分。我不知道为什么会这样,我怀疑:

  1. 一些更长的 UTF-8 字符?

    根据维基百科,AMF0 中的字符串被编码为 16 位 UTF-8。这意味着它可以是 8/16 位。但是,\u33C3和\uC32E都是韩文字符,在第二张图片中显示这不是我的情况。

  2. TCP有效负载的填充/转义字符?

    不...我从来没有听说过...

  3. 关于 TCP 的一些我不知道的事情?

    这是我发现的:

    一个。它不是 RTMP 消息的片段,TCP 数据包包含 RTMP 消息所需的所有内容。

    湾。校验和很好,一切似乎都很好。

    C。数据包被对端正确确认(图中未显示)

    d。这是可复制的,通过使用流媒体软件 Wirecast

我在这里错过了什么吗?为什么 Wireshark 可以正确解码有效载荷?为什么 Wireshark 简单地删除C3(这表明它与 AMF0 编解码器无关)?我很困惑。请帮忙 :'(

RTMP 协议规范在这里:https ://wwwimages2.adobe.com/content/dam/acom/en/devnet/rtmp/pdf/rtmp_specification_1.0.pdf

tcp rtmp
  • 1 个回答
  • 401 Views
Martin Hope
johnsonjp34
Asked: 2020-05-31 03:47:25 +0800 CST

在 NGINX-RTMP 上接收 RTMPS 流

  • 5

RTMP 的标准做法仍然是在线路上输出纯文本流密钥。

我想接受从编码器到 NGINX 的 RTMPS 流,但是 RTMP 模块还没有 RTMPS。

我对所有允许通过 RTMPS 获取 RTMP 流并发送到 facebook 之类的地方的中继解决方案不感兴趣,因为相同的安全漏洞仍然存在,因为在某些时候您正在通过纯文本传递密钥。

我的问题是在哪里可以找到 RTMPS 的参考规范?我想知道在 OBS 和 NGINX 等 RTMPS 源之间进行正确握手需要哪些密钥,然后我将使用与 RTMP 模块的连接。可以在服务器上使用普通密钥和 Let's Encrypt 之类的授权,以便它可以与 RTMPS 编码器进行握手吗?

我见过用于在 TLS 中包装 RTMP 的 stunnel。是否可以反过来 - 使用 stunnel 接收 RTMPS 并将 RTMP 模块转换回 RTMP?

ssl nginx rtmp
  • 4 个回答
  • 11288 Views
Martin Hope
Cristian C.
Asked: 2020-03-17 11:45:31 +0800 CST

一分钟后没有订阅者的 nginx rtmp 死机

  • 0

我有一个简单的 nginx-rtmp 运行以下应用程序:

rtmp {
    server {
        listen 1935;
        chunk_size 4000;

        application tv {
            # enable live streaming
            live on;

            allow publish all;
            allow play all;
        }
    }
}

问题是,当我从发布者开始流式传输时,如果我在一分钟内未连接订阅者,它将“死”,然后我无法再连接,直到我重新启动流并以足够快的速度连接订阅者。有什么指令可以用来避免这种情况吗?难道我做错了什么?

nginx rtmp
  • 1 个回答
  • 548 Views
Martin Hope
Mike Bohoslavskyi
Asked: 2017-02-11 05:51:37 +0800 CST

如何以mp4格式保存流?

  • 3

默认情况下,如果启用选项, nginx rtmp 模块会以.flv格式记录视频流,但我需要record.mp4

我发现可以通过回调将视频转换为.mp4录制完成时exec_record_doneffmpeg

有没有办法以.mp4格式录制视频或至少将其转换为这种格式?

nginx ffmpeg video-streaming rtmp
  • 1 个回答
  • 5924 Views
Martin Hope
KRiSh05
Asked: 2016-04-21 02:27:16 +0800 CST

AWS 能否通过 CloudFront 或 CloudFormation 支持基于 RTMP 的实时流式传输

  • 1

据我了解阅读所有这些文章:

docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-rtmp.html docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-overview.html docs.aws.amazon.com/AmazonCloudFront/latest/ DeveloperGuide/Tutorials.html docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/wowza-creating-stack.html docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-rtmp-creating.html docs.aws .amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-rtmp-values-specify.html docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/AMS5.0SubscribingToAMS.html docs.aws.amazon.com/AmazonCloudFront/latest /DeveloperGuide/LiveStreamingAdobeMediaServer5.0.html

特别是以下内容:

https://aws.amazon.com/it/blogs/aws/amazon-cloudfront-now-supports-streaming-media-content/ https://aws.amazon.com/it/blogs/aws/using-amazon-用于视频流的云端/

看起来不可能使用 CloudFront 与 TCP 80 或 TCP 1935 上的 Web 或 RTMP 分发镜像实时流媒体 RTMP,因为这些分发基于播放器和视频文件的静态文件的传递/镜像/缓存(FLV )。

亚马逊通过 CloudFormation 堆栈和 Adob​​e Media Server 或 WOWZA 集成提供对实时流媒体的支持,但在我们的场景中,客户端已经拥有自己的 Red5 流媒体服务器,并且已经在工作和设置。

如何使用 CloudFront 来镜像 TCP 80 或 1935 上的实时流媒体 RTMP 连接,通过使用在 Red5 上运行的源服务器和 RTMP 流,而不是从 S3 主机传递静态 FLV 文件?

我想了解亚马逊是否支持此解决方案以及在哪里可以找到执行此类配置的知识库。

基本上,在我们的场景中,我们已经在公共 Web 上公开了 RTMP,我们只需要 AWS 通过 CloudFront 将其缓存并提供给其他客户端。

我们想尝试仅为将由客户端下载以查看流式传输的 Flash Player 进行 Web 分发,并且我们希望播放器指向 AWS CDN 镜像 URL 以进行实时流式传输。

这可能吗?如何?

非常感谢。致以最诚挚的问候

amazon-cloudfront cdn rtmp red5
  • 2 个回答
  • 5160 Views
Martin Hope
user102132
Asked: 2012-07-05 12:36:49 +0800 CST

mod_rtmp 支持哪些声音格式?

  • 1

(freeswitch 模块)是否mod_rtmp支持 FLV 支持的所有声音格式?或者存在一些限制?

freeswitch codecs rtmp
  • 1 个回答
  • 414 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve