当前位置: 首页 > 知识库问答 >
问题:

Nginx RTMP拉到HLS流

徐嘉勋
2023-03-14

我遵循了这篇关于将RTMP设置为HLS流的指南-https://docs.peer5.com/guides/setting-up-hls-live-streaming-server-using-nginx/

worker_processes  auto;
events {
    worker_connections  1024;
}

# RTMP configuration
rtmp {
    server {
        listen 1935; # Listen on standard RTMP port
        chunk_size 4000;

# Define the Application
        application show {
            live on;
            pull rtmp://localhost:1935/stream/test;
            # Turn on HLS
            hls on;
            hls_path /mnt/hls/;
            hls_fragment 3;
            hls_playlist_length 60;
            # disable consuming the stream from nginx as rtmp
            deny play all;
        }

        # RTMP video on demand for mp4 files
        application vod {
            play /mnt/mp4s;
        }

        # RTMP stream using OBS
        application stream {
            live on;
        }

    }
}

http {
    sendfile off;
    tcp_nopush on;
    aio on;
    directio 512;
    default_type application/octet-stream;

    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 /mnt/;
        }
    }
}

我已经尝试将该配置中的rtmp链路更改为内部IP和外部IP,因为它可以被访问。我测试了从网络上的另一台计算机观看rtmp,以确认它是正常的。我想避免使用ffmpeg代码转换,因为服务器没有这种功能。

共有1个答案

酆勇
2023-03-14

所以我把它整理好了。基本上,我所寻求的是将RTMP转换为HLS,而不需要代码转换。如果其他人看到了这个并需要它,这很简单,但是,您确实需要ffmpeg来完成它。您实际上告诉ffmpeg将流传递给HLS,因为OBS已经是正确的视频/音频格式,所以它将毫无问题地接受它。我使用的命令是

ffmpeg -re -i rtmp://localhost:1935/stream/test -codec copy -f flv /mnt/hls/stream.m3u8

这样做对我的CPU几乎没有影响,这正是我所需要的。

 类似资料:
  • 在这一点上,我的解决方案是工作的,但只能作为RTMP,我可以使用URL完美地观看我的流: 但问题是我的LG智能电视使用WebOS不支持RTMP,我真的很想在那里播放我的流。我现在能看到的唯一解决方案是使用HLS。使用HLS也很好,但我需要在打开电视中的HLS流之前执行我的ffmpeg命令,否则它将不会创建在电视上显示流所需的文件。

  • 我目前正在一个平台上工作,该平台依靠MPEG Dash向浏览器提供音频和视频。对于onDemand im,使用ffmpeg将视频编码到h264/aac和MP4Box以创建清单。mpd文件。现在我想弄清楚如何创建实时MPEG Dash流,更具体地说,将hls实时流编码到MPEG Dash。 我需要重新编码所有的代码吗。ts段到。mp4(h264/aac)段,因为chrome不支持MPEG2T

  • SRS支持HLS/RTMP两种成熟而且广泛应用的流媒体分发方式。 RTMP指Adobe的RTMP(Realtime Message Protocol),广泛应用于低延时直播,也是编码器和服务器对接的实际标准协议,在PC(Flash)上有最佳观看体验和最佳稳定性。 HLS指Apple的HLS(Http Live Streaming),本身就是Live(直播)的,不过Vod(点播)也能支持。HLS是A

  • 我试图寻求(倒带)一个DVR HLS流使用MediaPlayer对象,但我得到th错误: 我已经阅读了前面的问题(Android 3.0上的HLS(http直播)和seeking),但它们已经2岁了。 在这个问题上有什么进展吗?

  • 由于公司业务,需要实现基于WEB查看监控画面,经过各种百度,补充了不少相关知识,了解到了很多大神的实现方法,也因为很多过时的帖子,而踩了不少的坑。 在被动积累了一些知识后,动手实现了v1.0初级版本,但是部署工作量较大,因为需要手动安装组件、配置、调试。 后来在发布到gitee后,被多位朋友咨询“如何使用”的问题后,决定对该版本再做提升,所以有了现在的v2.0版本,提高了部署效率,直接打包配置设备

  • 我正在寻找一个命令ffmpeg,它保存活的输入(rtmp或hls)到hls m3u8与mp4段文件。我知道这是可能的,即有infohttps://bitmovin.com/hls-news-wwdc-2016/,但我尝试的每个命令都生成ts文件。有人知道解决办法吗?