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

如何通过FFmpeg(Kokorin Jaffree)将RTSP摄像头流转为浏览器HLS流

解决RTSP转HLS直播流的权限与CORS问题

一、修复Jaffree调用FFmpeg的权限问题

  • 避免用sudo执行FFmpeg,通过调整权限解决:
    1. 确保FFmpeg有可执行权限:chmod +x /usr/bin/ffmpeg
    2. 将运行Java程序的用户加入FFmpeg所属组(通常是video或root组):usermod -aG video your_java_user
    3. 或者直接修改FFmpeg的所有者为Java运行用户:chown your_java_user:your_java_user /usr/bin/ffmpeg
    4. 同步调整HLS输出目录/temp/stream的权限:chown -R your_java_user:your_java_user /temp/stream

二、解决HLS播放的CORS问题

方案1:配置HTTP服务器的CORS规则

用Nginx/Apache托管HLS文件目录,添加跨域响应头:

  • Nginx配置示例:在server或location块中添加
    location /stream {
        alias /temp/stream;
        add_header Access-Control-Allow-Origin *;
        add_header Access-Control-Allow-Methods GET,OPTIONS;
        add_header Access-Control-Allow-Headers Range;
    }
    
  • Apache配置示例:在.htaccess或站点配置中添加
    Header set Access-Control-Allow-Origin "*"
    Header set Access-Control-Allow-Methods "GET, OPTIONS"
    Header set Access-Control-Allow-Headers "Range"
    

方案2:用FFmpeg内置HTTP服务分发流

直接让FFmpeg开启HTTP服务,避免跨域问题,修改命令如下:

ffmpeg -fflags nobuffer -rtsp_transport tcp -i rtsp://my_url \
  -vsync 0 -copyts -vcodec copy -an \
  -hls_flags delete_segments+append_list -f segment \
  -segment_list_flags live -segment_time 1 -segment_list_size 3 \
  -segment_format mpegts -segment_list index.m3u8 \
  -segment_list_type m3u8 -listen 1 -f hls http://0.0.0.0:8080/stream/index.m3u8

浏览器直接访问http://your_server_ip:8080/stream/index.m3u8,若网页与流同源则无CORS问题,也可通过Nginx反向代理该端口并配置CORS。

方案3:前端开发环境代理(临时用)

如果是开发阶段,通过前端代理工具转发请求:

  • Vue项目在vue.config.js中配置:
    module.exports = {
      devServer: {
        proxy: {
          '/stream': {
            target: 'http://your_hls_server_ip',
            changeOrigin: true
          }
        }
      }
    }
    

内容的提问来源于stack exchange,提问作者Глеб К

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 02:50:31