2016-07-14 12 views
2

Qt 애플리케이션에서 비디오를 재생하고 싶습니다. 비디오가 표시되고 다시 정상적으로 재생되지만 비디오는 QVideoWidget에 맞게 크기를 조정하지 않습니다QVideoWidget : 비디오가 끊어졌습니다.

#include <QApplication> 
#include <QWidget> 
#include <QMediaPlayer> 
#include <QVideoWidget> 
#include <QUrl> 

#include <iostream> 

using namespace std; 

const int WIDTH = 1280; 
const int HEIGHT = 720; 

int main(int argc, char *argv[]) 
{ 
    QApplication app(argc, argv); 

    QWidget window; 
    window.resize(WIDTH, HEIGHT); 
    window.setWindowTitle("Video Test"); 
    window.show(); 

    QMediaPlayer *player = new QMediaPlayer(); 
    player->setMedia(QUrl::fromLocalFile("/Path/To/Video.mp4")); 

    QVideoWidget *videoWidget = new QVideoWidget(&window); 
    player->setVideoOutput(videoWidget); 

    videoWidget->resize(WIDTH, HEIGHT); 

    videoWidget->show(); 
    player->play(); 


    return app.exec(); 
} 

문제 : 이것은 지금까지 내 코드입니다. 위젯보다 큰 동영상 부분이 잘립니다.

미리 감사드립니다.

편집 : 나는 코드를 감소하고 응용 프로그램이 시작될 때 비디오가 차단되는 것을 발견,하지만 난 실제로 크기에 맞는 마우스를 사용하여 창 크기를 조정할 때 :

#include <QApplication> 
#include <QWidget> 
#include <QMediaPlayer> 
#include <QVideoWidget> 
#include <QUrl> 

#include <iostream> 

using namespace std; 

const int WIDTH = 1280; 
const int HEIGHT = 720; 

int main(int argc, char *argv[]) 
{ 
    QApplication app(argc, argv); 

    QMediaPlayer *player = new QMediaPlayer(); 
    QVideoWidget *videoWidget = new QVideoWidget(); 

    player->setVideoOutput(videoWidget); 

    player->setMedia(QUrl::fromLocalFile("/Path/To/Video.mp4")); 
    player->play(); 

    videoWidget->resize(WIDTH/3, HEIGHT/3); 

    videoWidget->show(); 

    return app.exec(); 
} 

답변

0

일반적으로 규모를 모드는 비디오가 위젯을 채우는 방법을 나타냅니다. 스케일 모드 FitInView은 비디오가 화면 유지 비율을 유지하도록 강제 할 것입니다.

그러나이 배율 모드가 기본값이어야합니다. 당신은 수동으로 설정하려고 할 수 있습니다 :이 YouTube 동영상 https://www.youtube.com/watch?v=tGKmQy-VBX0을 지켜 코드를 밖으로 시도로

QVideoWidget *videoWidget = new QVideoWidget(&window); 
videoWidget->setScaleMode(Phonon::VideoWidget::FitInView); 
player->setVideoOutput(videoWidget); 
+0

Qon (QT + = phonon)에 포논을 추가하면 Phonon을 사용할 수 없습니다. QT의 알 수없는 모듈 : phonon. OSX btw를 실행 중입니다. 구성/설치하려면 어떻게해야합니까? – Stefan

+0

Unfortuantely, Qt/Phonon을 OSX에서 사용하는 것에 익숙하지 않습니다. 이 주제에 대한 몇 가지 질문 [here] (http : // stackoverfl ow.com/search?q=phonon+osx) 아마도 도움이됩니다. – Exa

+0

Phonon이 더 이상 Qt5의 일부가 아니라는 Phonon이없는 옵션이 있습니까? – Stefan

1

오류를 찾는 몇 시간 후, 나는이 OSX에 Qt를 버그라고 생각합니다.

동영상 크기 조정은 정상적으로 작동하지만 내 컴퓨터에서는 작동하지 않습니다.

+0

이것은 os x 및 fedora 24에서 발생합니다. 한숨. 그리고 우분투? 그들의 qtmultimedia 패키지가 너무 망가져서 gstreamer 0.1을 사용하며 배송도하지 않습니다. 아무도이 똥을 사용합니까? – KarlP

0

2016 년이면 누구나 QVideoWidget이 계속 파열됩니다. 그러나 장면 그래프를 보유하는 QGraphicsView 위젯을 사용하고 단일 QGraphicsVideoItem을 장면 그래프에 추가하십시오. 일을하고있는 것 같습니다 ...

잘, 정확하게 중심에 있지 않다는 것 말고는. 왼쪽에는 1 픽셀의 테두리가 있습니다. 대부분의 경우 전체 화면으로 전환됩니다. 내가 아 ...! "일어나지해야하는 (AVPlayerLayer없이 호출 updateVideoFrame."와 같은 오류가 진행

얻고, 너무 약 10 배 CPU를 차지합니다.

당신은 작업과 작품을 무엇을 알고 GStreamer 고맙습니다, gstreamer. 파이썬/qt로 통합하는 작업도 멋지게 작동합니다.