先简要说明下视频显示,视频文件想在电脑屏幕上显示,需要承载在UI控件上,例如MFC,可以用Picture控件,C#可以用PictureBox, Qt可以用QOpenGLWidget等,不同的UI库,实现方法不同。当然这只是像素的展示,还涉及到音视频编解码,同步等。这些,UI库可能就做不到了,需要借助第三方库,例如大名鼎鼎的FFmpeg, SDL,DirectX等。
最近做项目时,大部分用的FFmpeg解码,再在控件上显示,突然想到了,能不能用Qt呢,毕竟只是显示视频,没有其他的要求,视频操作的部分用FFmpeg。查找Qt助手后,发现还真的可以。
Qt,让C++程序员变得更轻松,封装了很多方法,直接调用即可,视频编解码都可以用Qt自身完成,本篇博客介绍Qt的视频显示类QVideoWidget的用法。先看看Qt助手关于QVideoWidget的说明:
The [QVideoWidget](qvideowidget.html) class provides a widget which presents video produced by a media object.
并且提供了示例代码:
player = new QMediaPlayer;
playlist = new QMediaPlaylist(player);
playlist->addMedia(QUrl("http://example.com/myclip1.mp4"));
playlist->addMedia(QUrl("http://example.com/myclip2.mp4"));
videoWidget = new QVideoWidget;
player->setVideoOutput(videoWidget);
videoWidget->show();
playlist->setCurrentIndex(1);
player->play();
QMed