RK3399 ,播放RTSP流,使用QMediaPlayer,不使用FFMpeg方式

rk3399 想要拉RTSP流并显示共有俩种显示方式

其中rk3399拥有mpp硬件解码器,能够解h264与h265码流

第一种方式为 FFmpeg+qt+MPP,方式进行解码

此种解码方式,前面的文章有阐述过,在此就不再过多阐述了

第二种方式是利用qt中的qMediaplayer方式进行播放,Qmediaplayer,自己并无解码器,rk3399中恰巧提供了GST(gstreamer)框架,Qt中的qmediaplayer 在linux下支持这种解码框架,能够自己调用,因此,我们只需要设置播放源即可,在本项目中,需要把显示的图像进行另外的处理,因此我们利用QVideoProbe 的方式的槽函数的方式进行获取

整体思路如下

1,确定rk3399 上有安装 gst ,可输入gst 按tab键进行补全命令进行查看,如图所示

2.

QVideoProbe class允许你监控正在播放或者记录的视频

可以发出两个信号,其中比较重要的是后面一个videoFrameProbed

void flush()

void videoFrameProbed( const QVideoFrame &frame)

利用此函数我们可以接收rtsp流中的每一帧图像,再利用cpu或者rk3399中的rga模块进行转码,将nv12转为rgb888格式,

如下所示

剩下部分为RGA解码,部分,注意这里要对图像的真实的分辨率进行计算,h264与h265,图像对齐方式并不一致,h264为16位对齐方式,h265对齐方式为265奇数对齐方式,直接设置用frame的宽高的方式,会导致rga解析的图像并不正确。因此我们这里要计算图像的正确的大小,还有一种方式,是利用ffmpeg拉流,获取图像正确的大小格式,这里我们直接计算图像的大小。为265整除即可,当图像转换完成后,即使宽高设置正确,也会存在绿边现象,这时我们可计算绿边的大小,用原始图像大小减去h265对齐之后的大小,就是绿边的大小,再利用Qimg的copy,拷贝正确的图像大小,即可。

rga 图像转换代码如下所示

  • 6
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三石兄x

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值