当前位置:   article > 正文

关于linux下librtmp推流开发的几点思考_librtmp无法播放g711a

librtmp无法播放g711a

1阻塞和非阻塞的问题

库架构是阻塞的,目前如果将socket全改为非阻塞出现一堆问题,因为我主要使用推流的功能,所以考虑只把send用非阻塞,增加发送失败的errno判断,如果全部改为非阻塞,好像代码改动量挺大?connect的错误处理、send、recv的处理都要添加东西。

2发送音频G711A的问题

我单纯发送G711A的数据,可能是我的服务器兼容性有问题,无法解析出有音频的存在,所以客户端完全没有声音,AAC的音频就正常,直到我在G711A数据的第一个包,也发送一个AAC的audio tag(4个字节),神奇的事情发生了,居然能听到声音了,用ffmpeg拉流,居然显示有AAC和PCMA两个通道,奇葩。所以,有没有好的兼容性强的服务器和客户端推荐。

3视频帧推流抓包的问题

我推流的是从IPC出的H264、H265和音频帧,发现用wireshark抓包的时候会出现许多unknow的包,都很小,非常奇怪。如果用雷神的代码和他那个h264推流就全是正常的video包,只要我换成其他的H264视频文件,或者IPC出流的实时帧就会有乱七八槽的数据包,这个包的包头也不符合RTMP的协议,我就很纳闷,现在还没找出原因来。。。

4librtmp库writeN源码的问题

很奇怪,librtmp中那个writeN函数虽然底层调用的send是阻塞的第四个参数是0且全局socket不是非阻塞的,但是他的逻辑又是非阻塞的逻辑,while循环中判断已发送的字节是否达到预期发送的数量,没有的话是continue继续执行while循环的,这不是典型非阻塞的逻辑吗。。。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/901650
推荐阅读
相关标签
  

闽ICP备14008679号