视频传输播放为解决的bug

来源:互联网 发布:国家二级c语言成绩 编辑:程序博客网 时间:2024/05/21 17:27

最近很长一段时间都是在做,视频传输、播放方面。

已有的开发工具:友善之臂开发板,USB摄像头(Logitech)。

打算实现的功能是:开发板实时发送视频,PC端实时接收视频并播放。

发送端开发板:开发板采集USB视频数据(YUV420P),T264进行编码,发送方式UDP,UDP里的数据是ts流,H264是用ts流进行封装的。

接收端PC:用UDP的recvfrom()函数接收数据,得到ts流数据,对ts流数据进行解析得到H264数据,对H264数据进行解码,得到YUV420P,对YUV420P进行播放。

按照自己的思想逻辑是没有问题的。开发板是能正常编码,ts封装,UDP发送的;PC是能接受UDP数据,解析出ts流得到H264数据,但在对H264进行解码的时候报错了,郁闷啊。

整个开发需要的代码完全来自于网上下载和参考前辈的代码:

开发板端:T264编码是下载的开源工程、TS封装是来自于合众达6467里面的一个实例、udp很简单就自己写的,这样开发板端代码就凑齐了。也能运行了。

PC端:H264解码使用的T264开源工程的解码部分、TS解析是用的霄神的开源项目SpecialFST里面的ts流解析部分、udp是自己简单写的、YUV播放模块是在pudn下载的一个开源的YUVviewer项目里面的YUV播放模块,这些代码凑在一块好像也是没什么逻辑问题的。

但最后的问题就是出现在PC端H264解码模块:WHY?

自今自己还是不明白,所以,实时播放功能还是没能实现:

T264解码报错情况是:当我把第一次解析后得到的H264数据传输给T264解码器时,是没有问题的,问题出现在第二次把H264数据传输给T264解码时报错了,报错地方在T264_parse(t)这个函数,错误显示是内存访问异常,越界访问了。

对于解析后的H264单独保存下来 是能播放的,而实时解码时就出问题了,还不知道问题到底出现在哪里。

初步考虑是不是:1、线程里包括接受UDP数据、ts解析、H264解码、YUV播放,是不是线程太耗时了报错?下一步解决办法是不是得再开一个线程用于解码播放?

2、是不是需要创建一个临时文件,用于写数据和读数据用?

3、是不是得考虑换思路了,换rtp、或换ffmep这种解码形式、或者用live555来实现?

思想太乱,不敢再多想。

0 0
原创粉丝点击