Qt+FFmpeg+OpenGL实现视频播放器(2)

1、用Qlabel播放视频

从解码后的数据中提取单个视频帧,并转换为 RGB 格式以便在 QLabel 上显示。使用了 QTimer 来控制帧的播放;

VideoInfo 类中,QTimer 用于定时触发视频帧的解码和渲染。QTimer 的工作机制是通过设定一个时间间隔(以毫秒为单位),然后周期性地发出 timeout() 信号。在每次 timeout() 信号触发时,执行特定的槽函数来处理视频解码和帧显示。

开始和停止播放
void VideoInfo::startPlayback()
{
    timer->start(1000 / 30); // 假设帧率为30帧每秒
}

void VideoInfo::stopPlayback()
{
    timer->stop();
}
  • startPlayback(): 这个函数启动计时器,并设置时间间隔为 1000 / 30 毫秒(约 33.3 毫秒),对应每秒 30 帧的帧率。这种方式确保每秒调用 decodeAndDisplayFrame() 函数 30 次,从而达到播放视频的效果。

  • stopPlayback(): 这个函数停止计时器,从而停止调用 decodeAndDisplayFrame()

解码和显示帧
void VideoInfo::decodeAndDisplayFrame()
{
    QImage frameImage = getFrame();
    if (
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值