关于docker容器中使用ffmpeg拉流rtsp报错问题

一、问题背景

最近有个业务需求用到node中间层使用ffmpeg对rtsp流转码成MP4推给前端,本地开发基本完成并且能完美运行,但是通过docker部署时发现ffmpeg不能正常使用,根据Log一步步排查,发现可能时端口以及协议问题。

docker容器内环境:

  • node v12.0
  • Debian GNU/Linux 9
  • ffmpeg 3.2.10-1~deb9u1

二、报错问题

通过排查日志,发现在docker中试用ffmpeg请求rtsp流时,UDP端口时无法返回的,报错如下:

[rtsp @ 0x5650696e2580] UDP timeout, retrying with TCP
[rtsp @ 0x5650696e2580] method SETUP failed: 454 Session Not Found
[rtsp @ 0x5650696e2580] Could not find codec parameters for stream 0 (Video: h264, none): unspecified size
Consider increasing the value for the 'analyzeduration' and 'probesize' options

三、解决方案

  • 尝试创建容器时指定暴露一个UDP端口,但依然报错,问题原因未知

  • 强制将ffmpeg对rtsp拉流时试用tcp协议,目前有效,加上-rtsp_transport tcp参数

ffmpeg -rtsp_transport tcp -i 'rtsp://admin:admin123!@192.168.15.2:554/cam/realmonitor?channel=17&subtype=0' -an -c:v copy -f mp4 -movflags +frag_keyframe+empty_moov+default_base_moof pipe:1

但是性能上是存在问题的,毕竟tcp需要多次握手,具体UDP为什么无法使用,问题还在排查中。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值