QMediaPlayer

  QMediaPlayer 是 Qt 框架中的一个多媒体播放器类,用于处理音频和视频文件的播放。它是 Qt Multimedia 模块的一部分,提供了一个易于使用的接口,允许您在您的 Qt 应用程序中播放各种媒体内容。

        QMediaPlayer是个壳(也可以叫框架),依赖本地解码器,视频这块默认基本上就播放个MP4甚至连MP4都不能播放,如果要支持其他格式需要下载k-lite或者LAV Filters安装即可(k-lite或者LAV Filters是指windows上的,其他系统上自行搜索,貌似嵌入式linux上依赖GStreamer(sudo apt-get install gstreamer1.0-libav ubuntu-restricted-extras),并未完整验证,报错提示 Your GStreamer installation is missing a plug-in,需要命令安装 sudo apt-get install ubuntu-restricted-extras)。如果需要做功能强劲的播放器,初学者建议用vlc、mpv,终极万能大法用ffmpeg(解码出来的视频可以用QOpenGLWidget走GPU绘制或者转成QImage绘制,音频数据可以用QAudioOutput播放)

        QMediaPlayer用法:

1. 多媒体格式支持: QMediaPlayer 支持许多常见的音频和视频文件格式,包括 MP3、WAV、OGG、MPEG、AVI 等。在 Qt 应用程序中播放各种不同类型的媒体文件。

2. 控制播放: 使用 QMediaPlayer 来控制媒体文件的播放、暂停、停止、快进、快退等操作。这使能够创建自定义的媒体播放器界面,并与用户交互。

3. 音量控制: 通过 setVolume 方法,可以设置音频的音量,以便根据需要调整音量。

4. 通知和错误处理: QMediaPlayer 提供了信号和槽机制,以便能够捕获媒体播放过程中的状态变化、错误信息等,并作出相应的处理。

5. 视频显示: 如果播放的媒体文件包含视频内容,将视频内容显示在 Qt 窗口中。为此,可以使用 QVideoWidget 或其他 Qt 组件来显示视频。

6. 媒体查询: QMediaPlayer 查询媒体文件的元数据,如标题、作者、持续时间等信息。

用例:

#include <QCoreApplication>
#include <QMediaPlayer>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    // 创建 QMediaPlayer 对象
    QMediaPlayer player;

    // 设置媒体文件路径
    player.setMedia(QUrl::fromLocalFile("/path/to/your/mediafile.mp3"));

    // 播放媒体文件
    player.play();

    return a.exec();
}

在网上找了一个别人的旧版本的播放器~自己更改了一天,终于可运行了,希望分享下同共学习; 不过出了少少问题:希望有经验的一起指导下: 运行环境:qt creator +windows 1、原计划是可支持视频播放的,现在只能加载间频(mp3),一加载视频就卡死 2.、自定义的进度条不起作用,不知为什么百分比槽连接不成功 connect(wmp, SIGNAL(PositionChange(double, double)),this, SLOT(Slot_onPositionChange(double, double))); 3、我用的是QAxWidget控件,这个是不是只支持windows的呢?或者还有没其实更好的? /******************************************************************************************* 项目名:QT播放器 Qt Mediaplayer 工程师:枫儿 完成时间:2009年12月28日 技术支持:嵌入式家园 www.studyarm.cn www.mcupark.com *******************************************************************************************/ #include "playerwindow.h" #include #include #include #include #include #include #include #include PlayerWindow::PlayerWindow() { //setCaption(tr("Media Player")); fileFilters = tr("Video files (*.mpg *.mpeg *.avi *.wmv)\n" //原来字符串换行也可这样用 "Audio files (*.mp3 *.wav)"); updateTimer = 0; setMouseTracking(true); this->wmp = new QAxWidget(this); wmp->setControl("{22D6F312-B0F6-11D0-94AB-0080C74C7E95}"); // wmp->setProperty("ShowControls", QVariant(false, 0)); wmp->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding); connect(wmp, SIGNAL(PlayStateChange(int, int)),this, SLOT(Slot_onPlayStateChange(int, int))); connect(wmp, SIGNAL(ReadyStateChange(ReadyStateConstants)),this, SLOT(Slot_onReadyStateChange(ReadyStateConstants))); connect(wmp, SIGNAL(PositionChange(double, double)),this, SLOT(Slot_onPositionChange(double, double))); this->openButton = new QPushButton(tr("&Open")); connect(openButton, SIGNAL(clicked()), this, SLOT(Slot_openFile())); this->playPauseButton = new QPushButton(tr("&Play")); connect(playPauseButton, SIGNAL(clicked()), wmp, SLOT(Play())); this->stopButton = new QPushButton(tr("&Stop")); connect(stopButton, SIGNAL(clicked()), wmp, SLOT(Stop())); this->seekSlider = new QSlider(Qt::Horizontal, this); seekSlider->setEnabled(false); connect(seekSlider, SIGNAL(valueChanged(int)),this, SLOT(Slot_sliderValueChanged(int))); connect(seekSlider, SIGNAL(sliderPressed()),wmp, SLOT(Pause())); QHBoxLayout *buttonLayout = new QHBoxLayout; buttonLayout->addWidget(openButton); buttonLayout->addWidget(playPauseButton); buttonLayout->addWidget(stopButton); QVBoxLayout *mainLayout = new QVBoxLayout(this); mainLayout->addWidget(wmp); mainLayout->addLayout(buttonLayout); mainLayout->addWidget(seekSlider); this->setLayout(mainLayout); }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

五百五。

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

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

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

打赏作者

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

抵扣说明:

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

余额充值