You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

借助ffmpeg实现Nginx RTMP服务下文件夹内视频通过网页播放器独立播放

解决方案

你已经完成Nginx+RTMP模块的基础配置,可通过扩展RTMP模块的点播/HLS能力,适配JWPlayer这类网页播放器的拉流需求,具体操作如下:


步骤1:修改Nginx配置文件

编辑你的Nginx配置文件(通常路径为/usr/local/nginx/conf/nginx.conf或/etc/nginx/nginx.conf),分别调整rtmp块和http块的配置:

rtmp块新增配置

rtmp {
    server {
        listen 1935;
        chunk_size 4096;

        # RTMP协议点播配置
        application vod {
            play /path/to/your/movie/folder; # 替换为你的电影文件夹实际路径
        }

        # HLS流配置,适配网页播放器
        application hls {
            live on;
            hls on;
            hls_path /tmp/hls; # 提前创建该目录,给Nginx运行用户授予读写权限
            hls_fragment 5s;
            hls_playlist_length 20s;
            push_reconnect 1s;
        }
    }
}

http块新增配置

http {
    # 保留你原有配置不变,新增如下server块
    server {
        listen 8080; # 可替换为任意未占用端口

        # 跨域配置,避免网页播放器跨域报错
        add_header Access-Control-Allow-Origin *;
        add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
        add_header Access-Control-Allow-Headers 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';

        # HLS切片文件访问配置
        location /hls {
            types {
                application/vnd.apple.mpegurl m3u8;
                video/mp2t ts;
            }
            root /tmp;
            expires -1;
        }

        # 可选:HTTP直接点播MP4文件配置
        location /vod {
            root /path/to/your/movie/folder;
            mp4;
            mp4_buffer_size 1m;
            mp4_max_buffer_size 5m;
        }
    }
}

修改完成后执行nginx -t检查配置合法性,确认无报错后执行nginx -s reload重载配置生效。


步骤2:生成可拉流的播放地址

根据需求选择两种方案即可:

  • 方案一:点播模式(按需加载,适合文件多、访问量小的场景)
    无需额外转码,直接生成HTTP点播地址即可,格式为http://你的服务器IP:8080/vod/电影文件名.mp4,JWPlayer原生支持直接播放该类地址。
  • 方案二:常驻直播流模式(随时可拉流,适合高访问量场景)
    用ffmpeg将本地电影文件推送到RTMP服务生成常驻HLS流,示例命令:
    ffmpeg -re -i /path/to/your/movie/folder/xxx.mp4 -c:v libx264 -c:a aac -f flv rtmp://127.0.0.1:1935/hls/xxx
    其中xxx为自定义流名,推送成功后对应的HLS流地址为http://你的服务器IP:8080/hls/xxx.m3u8。

步骤3:JWPlayer端加载流

直接将上述生成的地址填入JWPlayer配置即可,示例:

jwplayer("player-container").setup({
    file: "http://你的服务器IP:8080/hls/xxx.m3u8", // 也可替换为HTTP点播的MP4地址
    width: "100%",
    aspectratio: "16:9"
});

注意事项

  • 所有涉及的文件路径都需要给Nginx运行用户授予对应读写权限,避免403报错
  • 公网部署需要在防火墙/安全组放开1935(RTMP)、8080(HTTP)端口的访问权限
  • 播放卡顿可适当调大hls切片长度,或调整ffmpeg编码参数降低输出码率

内容的提问来源于stack exchange,提问作者abraham selous

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 02:36:03