Qt深入浅出(十七)多媒体

阅读: 评论:0

Qt深⼊浅出(⼗七)多媒体
多媒体编程
1 ⾳频组件
Qt提供的多媒体可以从⾼层到底层进⾏访问, 以及处理⾳频的输出和输⼊。Qt为了开发基于多媒体的应⽤程序,可以使⽤QMediaPlayer类.不仅⽀持从属的压缩⾳频格式,也⽀持⽤户安装的多媒体插件.
播放多媒体使⽤到QMediaPlayer类,需要在.pro⽂件中添加QT += multimedia
1.1 最简单的⾳乐播放器的实现
最简单例⼦
QMediaPlayer * player =new QMediaPlayer;
player->setMedia(QUrl::fromLocalFile("c:\\123.MP3"));
player->setVolume(50);
player->play();
1.2 常⽤函数
[public slot] void QMediaPlayer::play()    //播放
[public slot] void QMediaPlayer::pause()    //暂停
[public slot] void QMediaPlayer::stop() //停⽌
[public slot] void QMediaPlayer::setVolume(int volume); //设置⾳量
[public slot] void QMediaPlayer::setMedia(const QMediaContent &media, QIODevice *stream = Q_NULLPTR); //设置多媒体资源. [public slot] void QMediaPlayer::setPlaylist(QMediaPlaylist *playlist); //设置播放资源
[public slot] void QMediaPlayer::setPosition(qint64 position);  //设置资源位置
⼀个简单播放器的例⼦
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QMediaPlayer>
#include <QLabel>
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent =0);
~Widget();
public slots:
void playAudio();
private:
QMediaPlayer *_player;
QLabel * _label;
};
#endif // WIDGET_H
widget.cpp
#include "widget.h"
#include <QPushButton>
#include <QVBoxLayout>
#include <QFileDialog>
#include <QHBoxLayout>
#include <QSlider>
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
_player =new QMediaPlayer(this);
/*布局⾳量滑块*/
QHBoxLayout* hBox0 =new QHBoxLayout;
QLabel *label =new QLabel("volume:");
QSlider* slider =new QSlider;
slider->setOrientation(Qt::Horizontal);
slider->setRange(0, 100);
slider->setValue(_player->volume());
hBox0->addWidget(label);
hBox0->addWidget(slider);
/*布局控制按钮*/
QHBoxLayout* hBox1 =new QHBoxLayout;
QPushButton* pb0 =new QPushButton("open");
QPushButton* pb1 =new QPushButton("play");
QPushButton* pb2 =new QPushButton("pause");
QPushButton* pb3 =new QPushButton("stop");
hBox1->addWidget(pb0);
hBox1->addWidget(pb1);
hBox1->addWidget(pb2);
hBox1->addWidget(pb3);
/*窗⼝布局*/
QVBoxLayout* vBox =new QVBoxLayout;
_label =new QLabel("please open a mp3 file", this);
vBox->addWidget(_label, 2);
vBox->addLayout(hBox0, 1);
vBox->addLayout(hBox1, 1);
this->setLayout(vBox);
/*信号链接*/
connect(pb0, SIGNAL(clicked()), this, SLOT(playAudio()));
connect(pb1, SIGNAL(clicked()), _player, SLOT(play()));
connect(pb2, SIGNAL(clicked()), _player, SLOT(pause()));
connect(pb3, SIGNAL(clicked()), _player, SLOT(stop()));
connect(slider, SIGNAL(valueChanged(int)), _player, SLOT(setVolume(int)));
connect(_player, SIGNAL(volumeChanged(int)), slider, SLOT(setValue(int)));
}
void Widget::playAudio()
{
QString filename = QFileDialog::getOpenFileName(this, "MP3", "", "(*.mp3)");
if(QFileInfo(filename).isReadable())
{
_label->setText(QFileInfo(filename).fileName());
_player->setMedia(QUrl::fromLocalFile(filename));
}
}
Widget::~Widget()
{
}
1.3 播放列表的使⽤
上⾯简单的播放器,每次只能设置⼀⾸歌曲,如果想实现多⾸歌曲播放,可以使⽤多媒体播放列表类QMediaPlayList。
带播放列表的播放
QMediaPlayer * player =new QMediaPlayer;
QMediaPlayList * playlist =new QMediaPlayList
player-> setPlaylist(playlist);
playlist ->addMedia(QUrl::fromLocalFile("c:\\123.mp3"));
playlist->addMedia(QUrl("/123.mp3"));
player->play();
QMediaPlayList⼀些常⽤函数
void QmediaPlayList::setCurrentIndex(int playlistPosition)//设置当前播放的资源索引.
void QmediaPlayList::setPlaybackMode(PlaybackMode mode)  //设置播放模式,循环播放,随机播放等
void QmediaPlayList::next()        //播放下⼀⾸
void QmediaPlayList::previous()        //播放前⼀⾸
bool QmediaPlayList::addMedia(const QMediaContent &content; //添加资源
bool QmediaPlayList::removeMedia(int pos);  //移除某⼀个资源
bool QmediaPlayList::clear()                //移除所有资源
2 视频播放组件
Qt提供的多媒体功能能够打开并控制从低层到⾼层的视频数据,⽽且可以重叠(Overlap)使⽤⾳频以及视频数据。
为了能使⽤c++处理视频数据的多媒体程序,使⽤QMediaPlayer类实现视频编码。使⽤QVideoWidget和QGraphicsVideoItem类将视频数据显⽰到界⾯中。
需要在.pro⽂件中添加QT+= multimedia  multimediawidgets
2.1 使⽤QVideoWidget播放视频
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QMediaPlayer>
#include <QVideoWidget>
#include <QMediaPlaylist>
class Widget : public QWidget {
Q_OBJECT
public:
Widget(QWidget *parent =0);    ~Widget();
public slots:
void playVideo();
private:
QMediaPlayer *_player;
QVideoWidget *_videoWidget;    QMediaPlaylist *_playList; };
#endif // WIDGET_H widget.cpp

本文发布于:2023-05-08 02:33:15,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/2/91195.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:多媒体   播放   设置   视频   资源   控制   压缩
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图