我开发了MPEG-ts Streamer.它从文件中读取数据包,并以正确的速度将它们发送到接收器.
现在一切正常,除了我经常有一些滞后.我在我的代码中搜索了每个可能的错误.我已经优化了我的程序性能.
现在我保留一个日志,其中包含sendto()
发送数据包所需的时间,我还记录了数据包发送时间和发送时间之间的差异.
我注意到,每次数据包比平均时间晚很多时sendto()
,发送前一个数据包所花费的时间也远远高于正常数据包.
这表明我sendto()
每次以某种方式发送数据包时都会导致这些滞后.我正在使用UDP套接字.
我可能在插座上做错了吗?套接字缓冲区是否可能已满并且实际上需要更长时间才能发送数据包?或者我错过了什么?有没有办法在发送之前加速套接字或使其不完全填充缓冲区?
由于这是用于流式传输视频,因此我非常依赖于性能,主要用于HD,因为数据包的数量要高得多,因此滞后更常发生.
我目前正在使用NDK在Android上使用libvlc搞砸了一下.好吧,我了解如何在Android应用程序中使用本机C代码.现在我想使用libvlc库来创建一个简单的播放器,它可以从套接字读取数据.
是否有可能在该级别使用libvlc?我看到的问题是为libvlc设置一个窗口处理程序来绘制图像.
有没有人有这方面的经验可以给我一些反馈?
谢谢.