使用 ffmpeg 进行 RTSP 流式传输?

使用 ffmpeg 进行 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

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

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

答案1

值得一提的是,我可以使用以下工具设置本地 RTSP 服务器进行测试简单 rtsp 服务器并按照以下步骤操作:

  1. 为 RTSP 服务器创建一个配置文件,该文件使用rtsp-simple-server.yml以下一行来调用:
    protocols: [tcp]
    
  2. 将 RTSP 服务器作为 Docker 容器启动:
    $ docker run --rm -it -v $PWD/rtsp-simple-server.yml:/rtsp-simple-server.yml -p 8554:8554 aler9/rtsp-simple-server
    
  3. 使用 ffmpeg 将视频文件(无限循环)传输到服务器:
    $ ffmpeg -re -stream_loop -1 -i test.mp4 -f rtsp -rtsp_transport tcp rtsp://localhost:8554/live.stream
    

一旦运行完毕,您就可以使用 ffplay 来查看流:

$ ffplay -rtsp_transport tcp rtsp://localhost:8554/live.stream

注意简单 rtsp 服务器也可以处理 UDP 流(iso TCP),但将服务器作为 Docker 容器运行很棘手。

相关内容