美文网首页
BSDSocket接收视频数据总结

BSDSocket接收视频数据总结

作者: 睡后3k | 来源:发表于2016-08-09 22:28 被阅读66次

    最近项目上使用Socket接收单边机传送过来的h264裸流,这个小小的需求结果得花非常多的时间测试其稳定性。以下是在开发过程中解决的一点心得。

    1. 信号
      使用bsd sockets得需要注意处理SIGPIPE信号,这是一个不可恢复的系统信号,如果不做处理程序会直接crash。而我们需要给用户一个友好的提示

    2. 自定义协议
      h264数据是一个连续的IO流,所以双方都需定义一个协议指导客户端如果接收数据。协议包含frame的大小, i/p 的标记位等等业务相关信息。
      在实际测试途中,协议头并没有如愿接收正确的数据。比如期望的结果是 01 07 09 10, 但是客户端收到的是 01 00 00 00 ,后面的数据都被置0了, 造成接收帧数据的时候对齐错误。
      最后的解决办法就是尽量精简协议头长度,只保留帧长度等关键信息。另外,在获取帧数据的时候查找 h264 00 00 00 01 的分隔符。尽量保证数据的稳定性。

    3. 超时
      使用socket一个不稳定的地方就是,如果单边机出现一些不可预测是耗时操作影响发送速度,recv会长时间的阻塞。这时就留下一个难题,是设置足够长的时间等待还是规定时间关闭连接。给方便权衡之下选择使用默认超时。给socket一个‘复活’的机会

    相关文章

      网友评论

          本文标题:BSDSocket接收视频数据总结

          本文链接:https://www.haomeiwen.com/subject/ltbdsttx.html