我们正在使用 FFmpeg 通过 TCP 在两台计算机之间进行实时流式传输(点对点流式传输)。流式传输工作正常,我们希望添加对以下两个功能的支持:
- 除了将流传输到远程 PC 之外,还可以在本地保存流
- 处理网络中断
对于第一项,我们开始使用 Tee Muxer,它解决了第一个问题。但是,我们无法在网络中断期间保持连接,如果网络断开超过约 10 秒,流将无法恢复。
更多技术信息:流式 ffmpeg 命令:
ffmpeg -f avfoundation -video_size 1280x720 -framerate 30.0 -pixel_format uyvy422 -i“0:0”-preset veryfast -c:v libx264 -c:a aac -b:a 128k -ac 2 -ar 44100 -pix_fmt yuv420p -b:v 500k -maxrate 500k -bufsize 1000k -sc_threshold 0 -g 60 -keyint_min 60 -af“aresample=async=1:min_hard_comp=0.100000:first_pts=0”-r 30.0 -f tee-map 0 “[onfail=ignore]test_new.ts|[f=fifo:fifo_format=mpegts:drop_pkts_on_overflow=1:attempt_recovery=1:recovery_wait_time=1:recover_any_error=1]tcp://[主机]:[端口]?timeout=900000000”
接收端:
ffmpeg -i tcp://主机:端口?listen&timeout=900000000&listen_timeout=300000 ...
几秒钟后,我们在流媒体端收到以下错误:
连接到 tcp://[host]:[port]?timeout=900000000 失败:网络不可达
溪水再也没有恢复
我们希望尽可能长时间地保持 TCP 连接(我们选择 5 分钟进行测试)
有人知道这是否可以做到以及如何做到吗?
谢谢