linux srs_librtmp srs_rtmp_set_timeout setsockopt 设置超时时间 失败 返回error 2

最近在调试rtmp推流 用的是srs_librtmp.cpp这个开源库 

调试过程中发现 如果正常推流过程中,突然rtmp服务器ping不通的话 会导致 程序卡死在

srs_h264_write_raw_frames 这个函数中 ,跟踪到最后发现是 在这个函数 srs_hijack_io_writev中

卡死在::writev这个函数里面了  一直不返回  

但是这个过程中如果rtmp服务器恢复的话,这个函数又可以正常返回了,

后来发现 rmtp库 提供了一个 srs_rtmp_set_timeout  这个函数可以设置超时时间 

但是 跟踪下来发现 setsockopt 这个api 返回-1   errorn 为2   百度了一下 错误码2 的意思是 ENOENT(No such file or directory)搞不明白为什么 

这样会导致 推流过程中 rtmp服务器突然中断的话 程序 阻塞在那  并且不能正常结束 。

百度了也没发现 合适的解决方案。。。。

Guess you like

Origin blog.csdn.net/baoecit/article/details/121145390