QT QMediaPlayer 播放视频

先创建一个label 然后
视频将会显示在正中间 上下左右间隔为10的间隔
播放时,将label向左移动10个单位,向上移动10个单位,宽度加10,高度加10,即可显示在正确区域。

关于转码,只有转为本机识别的格式以后再打包,转到qt识别的格式,到别的机器才会通用解码播放,建议使用格式工厂,多转码,禁用解码器。

//pro文件
QT+=multimedia multimediawidgets

头文件包含
#include <QMultiMedia>
#include <QVBoxLayout>
#include <QMediaPlayer>
#include <QtMultimediaWidgets>

cpp实现
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow)
{
    QMediaPlayer* videoPlayer=new QMediaPlayer(this);//实例化播放器
    videoPlayer->setMedia(QUrl::fromLocalFile("./res/video/123.avi"));  //打开音视频流文件
//视频需要转码为avi格式
    QVideoWidget *videowidget = new QVideoWidget;  //用于播放视频专用窗口 初始值:0x0
    videowidget->resize(ui->label->size());  //把视频输出图像的大小重新调整为label的大小

    QVBoxLayout *layout = new QVBoxLayout;  //用于指定视频播放的位置
    ui->label->setLayout(layout);//视频画面输出
    layout->addWidget(videowidget);//指定视频播放的位置

    videoPlayer->setVideoOutput(videowidget);
    videoPlayer->play();
    
    //videoPlayer.state()==0;
    //播放器停止播放状态  根据枚举判断  下方是官方文档
}
 
enum State
    {
        StoppedState,
        PlayingState,
        PausedState
    };

    enum MediaStatus
    {
        UnknownMediaStatus,
        NoMedia,
        LoadingMedia,
        LoadedMedia,
        StalledMedia,
        BufferingMedia,
        BufferedMedia,
        EndOfMedia,
        InvalidMedia
    };

    enum Flag
    {
        LowLatency = 0x01,
        StreamPlayback = 0x02,
        VideoSurface = 0x04
    };
    Q_DECLARE_FLAGS(Flags, Flag)

    enum Error
    {
        NoError,
        ResourceError,
        FormatError,
        NetworkError,
        AccessDeniedError,
        ServiceMissingError,
        MediaIsPlaylist
    };

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值