Simple videoplayer/main.cpp
Simple videoplayer/mainwnd.h
Simple videoplayer/mainwnd.cpp
В версии 4.4 среда Qt пополнилась модулем Phonon. Phonon предоставляет возможность воспроизведения широкого диапазона форматов мультимедиа в приложениях Qt. В самом Phonon функциональность воспроизведения мультимедиа отсутсвует, она реализована в движках. На платформе Windows Phonon использует DirectX1. На платформе Linux Qt использует движок GStreamer2. На Mac OS X - QuickTime3. В зависимости от платформы и установленных кодеков диапазон воспроизводимых форматов может сильно варьироваться.
Наиболее простой(но не единственный) способ добавить поддержку воспроизведения видеофайлов в программу Qt - воспользоваться классом VideoPlayer:
player = new VideoPlayer(Phonon::VideoCategory, this);
Первый параметр может принимать следующие значения:
- Phonon::NoCategory — без категории.
- Phonon::NotificationCategory — для уведомлений.
- Phonon::MusicCategory — для аудиоплееров.
- Phonon::VideoCategory — для видеоплееров.
- Phonon::CommunicationCategory — для коммуникационных программ(таких как VoIP)
- Phonon::GameCategory — для игр.
- Phonon::AccessibilityCategory — для программ Accessibility(программы, проговаривающие надписи на экране, зачитывающие текст и т.п.)
Эти категории могут быть полезны программам, регулирующим громкость. Например автоматическое убавление громкости музыки при поступлении звонка VoIP.
Для открытия файла, а также для контроля за воспроизведением видео воспользуемся соответствующими методами:
openbutton = new QPushButton(tr("Open..."), filetoolbar1); filetoolbar1->addWidget(openbutton); connect(openbutton, SIGNAL(clicked()), this, SLOT(selectfile())); playbutton = new QPushButton(tr("Play"), filetoolbar1); filetoolbar1->addWidget(playbutton); connect(playbutton, SIGNAL(clicked()), this, SLOT(playfile())); stopbutton = new QPushButton(tr("Stop"), filetoolbar1); filetoolbar1->addWidget(stopbutton); connect(stopbutton, SIGNAL(clicked()), player, SLOT(stop())); pausebutton = new QPushButton(tr("Pause"), filetoolbar1); filetoolbar1->addWidget(pausebutton); connect(pausebutton, SIGNAL(clicked()), player, SLOT(pause())); ... void Mainwnd::selectfile() { QString filename = QFileDialog::getOpenFileName(this, tr("Please, select video file"), "."); if (filename.isEmpty()) return; player->play(filename); resize(sizeHint()); } void Mainwnd::playfile() { player->play(); resize(sizeHint()); }
Добавляем регулятор громкости:
volumeslider = new QSlider(Qt::Horizontal, filetoolbar1); volumeslider->setRange(0, 100); volumeslider->setValue(100); filetoolbar1->addWidget(volumeslider); connect(volumeslider, SIGNAL(valueChanged(int)), this, SLOT(setvolume(int))); ... void Mainwnd::setvolume(int value) { float volume; volume = (static_cast<float>(value)) / 100; player->setVolume(volume); }
Для успешной сборки не забудем добавить следующую строку в файл проекта:
QT += phonon





