使用 ffmpeg 流式传输 RTSP?

Can*_*ndy 6 video ffmpeg streaming rtsp

所以我已经能够成功地将 RTP 视频流从我的服务器发送到 LAN 上另一个系统上的客户端并使用 ffplay 播放它。我现在想使用 RTSP 在同一网络上发送视频,以便客户端可以接收视频并可以有其他选项,例如暂停视频等。 谁能给我一个通用指南或指向我可以帮助我的资源完成我的任务?

更新:

我试过这些命令:

ffmpeg -re -i input -f rtsp -rtsp_transport tcp rtsp://localhost:8888/live.sdp

ffplay -rtsp_flags listen rtsp://localhost:8888/live.sdp
Run Code Online (Sandbox Code Playgroud)

它确实开始实时流式传输视频,但我实际上看不到任何控制媒体流的选项,例如播放、录制等!

注意:我目前用于 RTSP 的 .sdp 文件与我用于 RTP 流的文件相同。

小智 5

FWIW,我能够按照以下步骤使用simple-rtsp-server和 ffmpeg设置本地 RTSP 服务器以进行测试:

  1. rtsp-simple-server.yml使用这一行调用的 RTSP 服务器创建一个配置文件:
    protocols: [tcp]
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将 RTSP 服务器作为 Docker 容器启动:
    $ docker run --rm -it -v $PWD/rtsp-simple-server.yml:/rtsp-simple-server.yml -p 8554:8554 aler9/rtsp-simple-server
    
    Run Code Online (Sandbox Code Playgroud)
  3. 使用 ffmpeg 将视频文件(永远循环)流式传输到服务器:
    $ ffmpeg -re -stream_loop -1 -i test.mp4 -f rtsp -rtsp_transport tcp rtsp://localhost:8554/live.stream
    
    Run Code Online (Sandbox Code Playgroud)

运行后,您可以使用 ffplay 查看流:

$ ffplay -rtsp_transport tcp rtsp://localhost:8554/live.stream
Run Code Online (Sandbox Code Playgroud)

请注意,simple-rtsp-server也可以处理 UDP 流(iso TCP),但是将服务器作为 Docker 容器运行会很棘手。

  • 谷歌搜索的时间。小时。 rtsp-simple-server 是第一个真正能够通过 ffmpeg 流式传输我的 iSight 且没有错误的东西,它只是工作了。谢谢! (2认同)