如何实现live555中接收的视频数据是完整帧
柒号华仔 2022年度博客之星评选前沿技术领域TOP 1 2012-07-09 03:49:00 实现了摄像头采集视频并以RTSP流发送出去,用vlc是可以播放这个RTSP流的,现在可以基于live555接收RTSP视频流保存为一个264文件,并基于ffmpeg解码这个文件在浏览器上显示出来。现在需要不保存为文件,直接取出一帧数据传给ffmpeg解码。
在FileSink的addData中fwrite函数写入数据到文件,但是strlen传给fwrite的data数据时大时小,小的时候为零,大的时候10000多;
可以看出afterGettingFrame中的adddata调用写入了图像数据,因为注销这个adddata,过10几秒写出的文件只有几K,不注销时写出的有10M左右,但是它写入的fBuffer也是时大时小,小的时候为零,大的时候10000多。
同时continuePlaying中fSource->getNextFrame函数,fBuffer也是跟上面一样,时大时小。
这三个个地方的data和fBuffer传过去解码,在解码函数avcodec_decode_video中都显示:[h264 @ 65E8EAC0] no frame!看起来是没有得到完整的一帧数据。
现在怎么样在这里得到完整的一帧图像数据,以便传过去解码,求指导,不胜感激。