JZ2440 mjpg-streamer学习笔记10-----自己写客服端_编译调试

1、编译调试

(1)将客户端程序上传到服务器

(2)进入到客户端目录,进行make操作

(3)出现错误解决错误

我们用到线程相关的结构体,所以要包含pthread.h这个头文件。


没有声明函数atol


看使用这个函数需要包含什么头文件


没有定义函数pthread_create,但我们明明包含了相关的头文件,用到创建线程,依赖于一个库,


因而需要在顶层makefile中,添加一个依赖的库文件pthread。


2、后续操作

(1)编译通过,生成mjpg-streamer-client应用程序


(2)在开发板运行mjpg-streamer软件,在虚拟机上通过无线网卡链接wifi热点。进入文本模式,输入用户名和密码,进入客户端路径,运行客户端,参数跟的是开发板的IP地址


(3)能看到视频数据,但是一瞬间,就卡住了。

我们要调试程序需要看他的打印信息,但是一运行程序,马上调用到了vga相关的操作,这样是看不到打印信息的。修改代码,暂时将vga操作的代码注释掉,先看打印信息,看问题出在哪里,找到问题后再将控制台打开。将清屏函数注释掉


修改crt.c里面的init函数

将vga相关的操作注释掉


在主函数中


(4)重新 make,运行客户端


查看打印信息

发送一个请求以后,就会收到服务器发过来的报文,报文

接下来接收视频数据,当接受到的数据是JPEG 数据,成功过转化,然后返回值是0,然后接收第二帧数据,不是JPEG 数据,返回值是-1,表示转换失败。然后出现段错误,然后程序就卡死啦。


(5)接下来寻找段错误是什么原因导致的

通过加打印的方式找出段错误出现的位置在哪里

最终发现在convert函数里面


进入Mjpeg2RgbConvert函数。

当接收到一帧图片不是jpeg格式,将执行以下if分支,在if分支里面将(实际像素数据空间)aucPixelDatas给释放掉了,第二次接收又要操作这个空间,但是这个空间已经被释放掉了,自然而然会引发段错误,因而要将

删掉,就可以把段错误给解决了。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值