10,000 USDT 悬赏,寻找Gate广场跟单金牌星探!🕵️♀️
挖掘顶级带单员,赢取高额跟单体验金!
立即参与:https://www.gate.com/campaigns/4624
🎁 三大活动,奖金叠满:
1️⃣ 慧眼识英:发帖推荐带单员,分享跟单体验,抽 100 位送 30 USDT!
2️⃣ 强力应援:晒出你的跟单截图,为大神打 Call,抽 120 位送 50 USDT!
3️⃣ 社交达人:同步至 X/Twitter,凭流量赢取 100 USDT!
📍 标签: #跟单金牌星探 #GateCopyTrading
⏰ 限时: 4/22 16:00 - 5/10 16:00 (UTC+8)
详情:https://www.gate.com/announcements/article/50848
自己构建直播视频传输管道:FFmpeg×MediaMTX的实践指南
问题:相机通过RTSP进行对话,但浏览器无法听到
假设我们想要将来自安全摄像头和物联网设备的实时视频显示在Web应用程序中。大部分摄像头通过RTSP(实时流协议)进行传输。但是,从2010年代开始,浏览器停止支持RTSP。换句话说,"摄像头所使用的语言"与"浏览器能够理解的语言"之间的差异是根本问题。
负责这次翻译的是FFmpeg(视频处理的万能工具)和MediaMTX(协议转换服务器)。将这两个结合起来,可以构建专业级的低延迟流媒体管道。
工具说明
FFmpeg:转换各种视频格式的魔法杖
FFmpeg的处理流程:
在流媒体应用中,FFmpeg作为输入引擎工作。它从网络摄像头或文件中捕获视频,进行高效编码,并通过RTSP或RTMP将其发送到服务器。
MediaMTX:支持多个客户端的协议中心
FFmpeg是单一输出,但MediaMTX可以同时向多个客户端推送。进一步:
通过一个二进制文件和YAML配置文件,可以处理以往需要多个专用服务器的复杂场景。
实施步骤
第一步:安装工具
Ubuntu/Debian:
sudo apt 更新 sudo apt install autoconf automake build-essential pkg-config libx264-dev libvpx-dev libfdk-aac-dev git clone ffmpeg cd ffmpeg ./configure --enable-gpl --enable-libx264 --enable-nonfree 使 -j$(nproc) sudo make 安装
macOS:
brew install ffmpeg
窗户: 从gydan.dev下载→解压到C:\ffmpeg→添加到系统PATH
MediaMTX v1.15.0也已安装(单个二进制文件,简单)。
第2步:视频文件流式传输
创建 mediamtx.yml:
路径: 测试视频: 来源:出版商
启动 MediaMTX:
MediaMTX mediamtx.yml
使用FFmpeg通过RTSP发送视频:
ffmpeg -re -i video.mp4 -c:v libx264 -preset fast -c:a aac -f rtsp rtsp://localhost:8554/test_video
-re:保持帧率(直播必需) -preset fast:编码速度的平衡
在VLC媒体播放器中确认:媒体 → 打开网络串流 → rtsp://localhost:8554/test_video
第3步:使用网络摄像头进行直播
窗户:
ffmpeg -f dshow -rtbufsize 100M -i video=“集成网络摄像头” -c:v libx264 -preset ultrafast -tune zerolatency -f rtsp rtsp://localhost:8554/webcam
macOS:
ffmpeg -f avfoundation -帧率 30 -video_size 1280x720 -i “0” -c:v libx264 -预设超快 -调整零延迟 -f rtsp rtsp://localhost:8554/webcam
Linux的:
ffmpeg -f v4l2 -i /dev/video0 -c:v libx264 -preset ultrafast -tune zerolatency -c:a aac -f rtsp rtsp://localhost:8554/webcam
-tune zerolatency是重点。实时流媒体优化。
步骤4:在浏览器中播放(WebRTC化)
更新mediamtx.yml:
WebRTC:是的 webrtc地址: :8889 webrtcEncryption:否 webrtcAllowOrigin:'*'
路径: 网络摄像头: 来源:出版商
重新启动MediaMTX,然后在浏览器中打开http://localhost:8889→直播画面将显示在浏览器中。
数据流
MediaMTX不进行再编码。只是将H.264流打包到不同协议的容器中。因此实现了低延迟。
本次总结
基本的管道完成:
只有在生产环境中存在挑战:
第二部分将进行认证添加、IP摄像头连接和互联网支持。