포논 (Phonon)과 같은 비디오 플레이어를 만들지 않고 주어진 비디오 파일의 크기 (너비와 높이)를 읽어야합니다. 내 질문은이 데이터에 액세스하기 위해 사용해야하는 클래스입니다. 이미 QPixmap과 QMovie를 사용해 보았지만 이들 중 niether는 * .mov를 지원합니다.Qt : 비디오 플레이어를 만들지 않고 비디오 크기를 읽으십시오.
감사합니다.
포논 (Phonon)과 같은 비디오 플레이어를 만들지 않고 주어진 비디오 파일의 크기 (너비와 높이)를 읽어야합니다. 내 질문은이 데이터에 액세스하기 위해 사용해야하는 클래스입니다. 이미 QPixmap과 QMovie를 사용해 보았지만 이들 중 niether는 * .mov를 지원합니다.Qt : 비디오 플레이어를 만들지 않고 비디오 크기를 읽으십시오.
감사합니다.
파블로, 당신이 시도 할 수 있습니다 :
는QMediaContent media("myMovie.mov");
QSize resolution = media.canonicalResource().resolution();
코드는 Qt Mobility 프로젝트에서 QMediaResource 클래스를 사용합니다. 나는 아직 그것을 시도하지 않았고 적어도 올바른 백엔드 (MOV 형식을 읽을 수있는 플러그인)가 필요하다고 가정합니다. 이 개요는 API 개요에서만 제공합니다.
희망이 도움이됩니다.
나는 결국 내 문제를 해결했고 나는 다른 사람들과 나의 해결책을 나눌 것이라고 생각했다. 나는 다음과 같은 두 가지 변수를 초기화 클래스 생성자에서 는 :
media = new Phonon::MediaObject(this);
videoWidget = new Phonon::VideoWidget;
내 클래스의 슬롯에 media
의 신호를 연결합니다
connect(media,SIGNAL(stateChanged(Phonon::State,Phonon::State)),
this,SLOT(videoState(Phonon::State,Phonon::State)));
나는 사용자가 비디오 파일을 선택할 수 있습니다 :
QString filename = QFileDialog::getOpenFileName(this,tr("Choose video file"),QDir().homePath(),tr("Video files (*.mov *.mpg *.avi)"));
그리고 media
객체에이 파일을 적용
media->setCurrentSource(filename);
Phonon::createPath(media,videoWidget);
media
개체가 이미 슬롯에 연결되어 있기 때문에 media
의 모든 변경 사항을 모니터 할 수 있습니다.
void VideoModuleDialog::videoState(Phonon::State newState, Phonon::State oldState)
{
if(newState == Phonon::PlayingState || newState == Phonon::StoppedState)
{
width->setText(QString().number(videoWidget->sizeHint().width()));
height->setText(QString().number(videoWidget->sizeHint().height()));
}
if(newState == Phonon::ErrorState)
{
QMessageBox::critical(this,tr("Video file error!"),
tr("Video file error: ") + media->errorString(),QMessageBox::Ok);
}
}
그러나이 코드는 매우 느린 것 같습니다. Phonon 라이브러리는 내 프로그램에서 한 곳에서만 사용됩니다.이 라이브러리는 사용자가 포함 할 비디오 클립을 선택할 수있는 대화 상자 창에 있으며 여기에서 파일에서 비디오 크기를 읽을 수 있습니다. 이 대화 상자 창이 열릴 때까지 약간의 시간이 걸리므로,이 솔루션은 제 문제에 너무 가혹합니다. 그러나 다른 솔루션을 찾을 수 없었습니다. 이 게시물의 주제와 관련하여 의견이 다를 경우이를 듣게되어 기쁩니다.
답장을 보내 주셔서 감사합니다. 나는 그것을 구현하고 작동하는지 알려주지. –
Qt Modility를 사용하지 않았습니다. 왜냐하면 저와 제 코드를 프로그래밍하는 다른 모든 사람들을 위해 추가 다운로드가 필요할 것이기 때문입니다. 나는 기본 Qt 설치를 고수하고 다른 솔루션을 발견했다. 관심이 있다면 아래에서 찾을 수있다. 어쨌든 도와 주셔서 감사합니다! –