ffmpeg 拉流出现 Name or service not known

博客内容讲述了在处理华为云上的FLV流时遇到的ffmpeg拉流失败问题,主要原因是DNS解析超时。作者通过抓包分析发现ffmpeg的超时设置与DNS响应时间不匹配。通过调整ffmpeg的timeout参数和http的reconnect_delay_max选项,成功减少了错误发生的频率。在DNS延迟实验中进一步验证了reconnect_delay_max参数的有效性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近发现线上华为云机器出现拉流失败的日志,拉取的是 flv 流,即走的是 http 协议:

错误日志:

[tcp @ 0x49f85c0] Failed to resolve hostname proxy-hls.duowan.com: Name or service not known

通过在机器上抓包 dns 数据发现,在 dns 响应到达之前 ffmpeg 出现了上述错误,

显然 ffmpeg 中出现了超时,从抓包数据看,dns 响应超过 2 秒 ffmpeg 就会出现超时;

dns query request:

dns query response:

翻阅 ffmpeg 文档发现 tcp 里面有一个 timeout 选项,以微秒为单位,

因此尝试在拉流参数中添加 -timeout 10000000 选项,后续发现错误的出现频率有降低,

但仍然存在,但此时是 4 秒超时,也就是 -timeout 参数并非 dns 超时时长;

继续阅读文档,发现 http 协议里面有个 reconnect_delay_max 选项,在 dns 解析超时后可以

继续重试,将该参数的值设为 10 ,并在 mac 上设置 dns 延迟到 8 秒,发现可以成功,说明该

参数起作用了,后续继续观察线上的情况。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值