因此,我已能够成功地将 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 服务器并按照以下步骤操作:
- 为 RTSP 服务器创建一个配置文件,该文件使用
rtsp-simple-server.yml
以下一行来调用:protocols: [tcp]
- 将 RTSP 服务器作为 Docker 容器启动:
$ docker run --rm -it -v $PWD/rtsp-simple-server.yml:/rtsp-simple-server.yml -p 8554:8554 aler9/rtsp-simple-server
- 使用 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 容器运行很棘手。