如何实现live555中接收的视频数据是完整帧

柒号华仔 柒号华仔 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
实现了摄像头采集视频并以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!看起来是没有得到完整的一帧数据。

现在怎么样在这里得到完整的一帧图像数据,以便传过去解码,求指导,不胜感激。
...全文
评论 9
收藏 已收藏
分享
返回顶部
柒号华仔
柒号华仔 2022年度博客之星评选前沿技术领域TOP 1 2022年度博客之星评选前沿技术领域TOP 1
多媒体/流媒体开发 2,554 成员 20,277 内容