1.该程序运行的环境是在ubuntu 下,程序基本定型.目前的状态是:只是偶尔重启。
在深入程序内部时,我总是小心翼翼的,把未初始化的变量给初始化了,在类内的成员,需要初始化的,都在构造时初始化了,注意,不是赋值。
然而,这看起来,效果不是很明显。
2. 在我注意到,程序有时候运行时,出现错误,这个提示是关于线程方面的。
于是,我在网上去找答案,去google,去我经常去的博客网站,博客园,csdn,去 stackoverflow.com
在线程相关函数中,用到了互斥锁,于是有了这个__pthread_tpp_change_priority: Assertion异常。
在这个博客地址中,解决了这个问题, Assertion异常问题
我 以为问题就是出现这里,其实不然。 重启的问题依旧存在。 依旧在道路上前进。
3. 开始更改取 摄像机数据 的方式。 在网上找到了live555 开源的项目。
于是,有了后面的诸多问题。多线程,阻塞了怎么办,任务怎么调度等等。
我 这边用到了是live555 的客户端程序 ,参考了这个链接基于live555的客户端程序及ffmpeg解码
好了。问题又来了。用live555的代码收到的数据,并不能马上用,说这个数据要好好好处理,比如说解码,转换等。
解码相关的地方,参考了雷神的一些博客。在此也给出链接: ffmpeg音视频编码零基础学习
这个地方差不多用了一个月了。直到最后,解码出图像,程序看起来运行成功了。其实,还是不然。
路慢慢其修远兮! ...
4. 开始对重启的事件进行总结了,几乎是3个小时内,有时是2个小时,程序重启。 而分析程序 重启的条件是: 与服务端 断开了连接。
这件事情不能这样不了了之。
现在只能,个个击破了,一个单元功能来测试。一个一个来。
像往常一样。 程序在重启中,只不过这次重启没成功,一直在打印,open file many 相关的字样,大概意思是打开的文件过多。导致失败...
这个问题好办,修改系统默认的打开个数,把这数值调大。
Linux 打开文件数too many open files
5. 再后来 ,我注释了与window 平台的功能。上线再测试了 。程序重启的频率少了很多,目前还是探索中。
6. 未完待续。