Qt - odtwarzanie plików wideo z wykorzystaniem klasy QMediaPlayer i QVideoWidget

Stronę tą wyświetlono już: 20 razy

Klasa QMediaPlayer umożliwia odtwarzanie również plików wideo. W tym przypadku należy brać pod uwagę, że to, czy program odtworzy dany plik wideo zależy od obecności w systemie odpowiednich kodeków. W przypadku plików wideo konieczne jest również użycie kontrolki QVideoWidget, która jest przygotowana specjalnie pod renderowanie wyświetlanych klatek filmu. Niestety kontrolka ta może zostać utworzona tylko za pomocą ręcznie napisanego kodu np. tak:

Listing 1
  1. playlist = new QMediaPlaylist;
  2. playlist->addMedia(QUrl::fromLocalFile("C:/video_file_1.avi"));
  3. video = QVideoWidget(this->ui->centralWidget);
  4. player = new QMediaPlayer(this->ui->centralWidget);
  5. player->setVideoOutput(videoWidget);
  6. player->setMedia(playlist);

W przypadku użycia kontrolki QVideoWIdget należy skorzystać z zdarzenia resizeEvent w celu dostosowania obszaru tejże kontrolki:

Listing 2
  1. void MainWindow::resizeEvent(QResizeEvent *event)
  2. {
  3. QWidget::resizeEvent(event);
  4. QRect r = ui->centralWidget->geometry();
  5. videoWidget->setGeometry(0, 0, r.width(), r.height());
  6. }

Kontrolka QVideoWidget udostępnia kilka metod, dzięki którym można zmienić właściwości wyświetlanego obrazu:

  • brightness - zwraca bieżące ustawienie przyciemniania i rozjaśniania obrazu;
  • setBrightness - przyciemnia lub rozjaśniania obraz;
  • contrast - zwraca bieżące ustawienie kontrastu obrazu;
  • setContrast - ustawia kontrast obrazu;
  • hue - zwraca bieżące ustawienie odcieni kolorów obrazu;
  • setHue - ustawia odcień kolorów obrazu

Domyślnie wartości wszystkich wyżej wymienionych parametrów są ustawione na 0 a ich dostępny zakres mieści się od -100 do 100.

Strony powiązane
strony powiązane
  1. doc.qt.io/qt-5/qmediaplayer.html - opis klasy QMediaPlayer na stronie dokumentacji Qt
  2. doc.qt.io/qt-5/qmediaplaylist.html - opis klasy QMediaPlaylist na stronie dokumentacji Qt
  3. doc.qt.io/qt-5/qvideowidget.html - opis klasy QVideoWidget na stronie dokumentacji Qt

Komentarze