Простой видеоплеер

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
videoplayer.png
page_revision: 19, last_edited: 1201976064|%e %b %Y, %H:%M %Z (%O ago)
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License