SRS + FFmpeg WebRTC 循环推流环境搭建
SRS FFmpeg WebRTC 循环推流环境搭建指南本指南介绍如何使用 Docker Compose 快速搭建一个基于 SRS (Simple Realtime Server) 的流媒体测试环境。推流协议RTMP (FFmpeg 模拟推流)拉流协议WebRTC (低延迟播放)特性视频循环播放、不保存录制文件、支持静音音频填充、Docker 容器化。1. 项目文件结构在你的项目目录下确保包含以下文件docker-compose.yml定义容器服务。srs.confSRS 服务器配置。test.mp4你的测试视频文件。2. 配置文件详解2.1 SRS 配置文件 (srs.conf)此配置开启了 WebRTC 必需的 HTTP API 和 RTC 端口并显式禁用了 DVR 和 HLS 以节省磁盘。# srs.conflisten1935;max_connections1000;daemon off;srs_log_tank console;http_api{enabled on;listen1985;# WebRTC 信令交换端口}http_server{enabled on;listen8080;# 静态资源/控制台端口}rtc_server{enabled on;listen8000;# UDP 媒体传输端口# 注意如果在局域网/公网访问需将 127.0.0.1 改为宿主机实际 IPcandidate127.0.0.1;}vhost __defaultVhost__{rtc{enabled on;rtc_to_rtmp on;rtmp_to_rtc on;}# 确保不保存流文件dvr{enabled off;}hls{enabled off;}}2.2 Docker Compose 配置 (docker-compose.yml)使用 Bridge 网络模式通过端口映射暴露服务。FFmpeg 容器负责循环转码并推流。services:srs:image:ossrs/srs:latestcontainer_name:srs_serverports:-1935:1935# RTMP-1985:1985# HTTP API-8080:8080# Console/Players-8000:8000/udp# RTC UDP 传输volumes:-./srs.conf:/usr/local/srs/conf/srs.confrestart:alwaysffmpeg:image:jrottenberg/ffmpeg:latestcontainer_name:ffmpeg_pusherdepends_on:-srsvolumes:-.:/data# 参数说明# -re: 按原帧率读取; -stream_loop -1: 无限循环# anullsrc: 生成静音轨确保 WebRTC 音画同步# -c:v libx264 -tune zerolatency: 针对实时流优化视频编码# -c:a opus: WebRTC 标准音频格式entrypoint:ffmpeg -re -stream_loop -1 -i /data/test.mp4 -f lavfi -i anullsrcchannel_layoutstereo:sample_rate48000 -c:v libx264 -preset superfast -tune zerolatency -c:a opus -strict -2 -map 0:v:0 -map 1:a:0 -f flv rtmp://srs:1935/live/testrestart:on-failure3. 核心机制说明3.1 为什么 WebRTC 需要candidateWebRTC 建立连接时服务器会通过candidate告诉浏览器“来这个 IP 地址找我取数据”。127.0.0.1仅限在本机浏览器测试。局域网 IP允许同一 WiFi 下的其他设备观看。3.2 FFmpeg 命令中的关键点-tune zerolatency禁用 B 帧消除编解码缓冲区延迟。anullsrc由于某些浏览器在没有音频轨道时无法启动 WebRTC 渲染手动补齐静音轨可显著提高成功率。-map显式指定第一个输入源取视频第二个输入源静音源取音频。4. 运行与验证启动环境docker-composeup-d验证步骤检查推流状态查看docker logs -f ffmpeg_pusher确认没有报错。访问控制台打开http://localhost:8080/在“视频流”中确认5. 常见问题 (FAQ)为什么 Clients 数始终为 1FFmpeg 作为一个推流客户端始终连接在 SRS 上所以即使没人观看Client 数也至少为 1。画面黑屏怎么排查检查浏览器控制台 (F12) 或chrome://webrtc-internals/。确认防火墙是否放行了8000/udp端口。确认视频编码是否为 H.264音频是否为 Opus。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2453245.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!