我正在尝试使用 ffmpeg 创建 RTSP 流,并使用 MediaMTX 在浏览器(WebRTC)中提供视频服务。 实现这一目标的正确方法是什么?
(注意:我在 Windows 机器上使用 wsl2 ubuntu)
跑步媒体MTX:
sudo docker run --rm -it -p 8554:8554 -p 8889:8889 bluenviron/mediamtx
运行 ffmpeg:
ffmpeg -stream_loop -1 -re -i ./Big_Buck_Bunny.mp4 -c:v copy -f rtsp rtsp://localhost:8554/output
出现错误:
向复用器提交数据包时出错:管道损坏
尝试使用 TCP 标志运行 ffmpeg 时:
ffmpeg -stream_loop -1 -re -i ./Big_Buck_Bunny.mp4 -c:v copy -rtsp_transport tcp -f rtsp rtsp://localhost:8554/output
MediaMTX 日志:
已关闭:WebRTC 不支持带有 B 帧的 H264 流
通过将编解码器设置为 libx264 并将最大 B 帧设置为 0 来修复:
ffmpeg -stream_loop -1 -re -i ./video.mp4 -c:v libx264 -bf 0 -rtsp_transport tcp -f rtsp rtsp://localhost:8554/output