목록QT/Qt Multimedia 공부하기 (15)
알쓸전컴(알아두면 쓸모있는 전자 컴퓨터)
[Qt Multimedia] 임시 중단 안내 오픈 소스를 직접 분석 하고 있습니다만. 구조를 모르고 맨땅에 해딩하니 너무 서두가 없고 이해도 측면에서 점점 오리무중으로 가는 상태가 발생하여 다른 공부 방법을 찾아 봐야 할것 같습니다. QT Mutimedia 에서 low 소스부터 건들어 미디어을 위한 개발을 하기 보단 기본적으로 예제에서 나와 제공 하는 API 들을 사용하고 추가 필요한 기능은 opencv + ffmpeg 라이브러리 학습을 통해 Qtmutimedia + opencv + ffmpeg 로 가는게 옮은 방법이고 효율적으로 생각 됩니다. 이로인해 분석을 임시중단하고 opencv 와 ffmpeg 학습을 먼저 하고자 합니다. 지금까지 해온 소스 분석 내용은 혹시 모르니 공개로 해 놓겟습니다.
QAudioRoleControl 일단 소스를 보겠습니다. qaudiorolecontrol.h class Q_MULTIMEDIA_EXPORT QAudioRoleControl : public QMediaControl { Q_OBJECT public: virtual ~QAudioRoleControl(); virtual QAudio::Role audioRole() const = 0; virtual void setAudioRole(QAudio::Role role) = 0; virtual QList supportedAudioRoles() const = 0; Q_SIGNALS: void audioRoleChanged(QAudio::Role role); protected: explicit QAudioRoleContro..
QMediaPlayerControl 일단 소스를 보겠습니다. class QMediaPlaylist; class Q_MULTIMEDIA_EXPORT QMediaPlayerControl : public QMediaControl { Q_OBJECT public: ~QMediaPlayerControl(); virtual QMediaPlayer::State state() const = 0; virtual QMediaPlayer::MediaStatus mediaStatus() const = 0; virtual qint64 duration() const = 0; virtual qint64 position() const = 0; virtual void setPosition(qint64 position) = 0; vir..
QMediaServiceProvider 일단 소스를 보겠습니다. class QMediaService; class Q_MULTIMEDIA_EXPORT QMediaServiceProvider : public QObject { Q_OBJECT public: virtual QMediaService* requestService(const QByteArray &type, const QMediaServiceProviderHint &hint = QMediaServiceProviderHint()) = 0; virtual void releaseService(QMediaService *service) = 0; virtual QMediaServiceProviderHint::Features supportedFeatures(co..
QMediaPlayer QMediaPlayer의 기본 구조는 아래 그림 정도가 될것 같습니다. 이제 생성자 소스를 보겠습니다. QMediaPlayer::QMediaPlayer(QObject *parent, QMediaPlayer::Flags flags): QMediaObject(*new QMediaPlayerPrivate, parent, playerService(flags)) { Q_D(QMediaPlayer); d->provider = QMediaServiceProvider::defaultServiceProvider(); if (d->service == 0) { d->error = ServiceMissingError; } else { d->control = qobject_cast(d->service->..
QMediaObject QMediaObject 는 QMediaPlayer, QAudioDecoder and QCamera, 의 공통 부모 클래스로 되어 있습니다. 그리고 QMediaService.로 제어를 합니다. 그리고 QMediaService 는 QMediaControl 를 상속 받는 클래스들 가져와 줄수 있게 합니다. QMediaControl 를 가져올때는 QMediaService 를 통해서 가져와야 된다고 합니다. 대부분 QMediaObject 는 new QMediaService 객체를 요구 하지만 몇 몇 QMediaRecorder and QAudioRecorder 서비스는 다른 QMediaObject 의 QMediaService 를 공유합니다. 이야기는 대충 이정도 되는것 같습니다. 맨땡에 해딩..
비디오 위젯 예제 분석 데이터의 흐름을 파악(2) 지난번 mediaPlayer.play(); 가 동영상을 재생하는 과정 까지 어떻게 데이터가 전달되어 동영상으로 재생 되는지 알아 보겠습니다. 이번에는 \Src\qtmultimedia\src\multimedia 의 multimedia.pro 프로젝트를 열어서 play() 메소드를 찾아야 합니다. Src\qtmultimedia\src\multimedia\playback\qmediaplayer.cpp 을 보겠습니다. qmediaplayer.cpp void QMediaPlayer::play() { Q_D(QMediaPlayer); if (d->control == 0) { QMetaObject::invokeMethod(this, "_q_error", Qt::Que..
비디오 위젯 예제 다운로드 Qt 설치시에 소스 파일을 설치 하게 되거나 http://download.qt.io/official_releases/qt/5.7/5.7.0/submodules/ 의 공식 Qt 배포 사이트에 가면 qtmultimedia-opensource-src-5.7.0.zip 가 존재 합니다. 해상 소스에는 qtmultimedia 소스와 예제 소스가 들어 있습니다. 온라인 설치 파일로 설치 했을때에는 체크를 하면 소스가 5.7 폴더 안에 설치가 됩니다. qtmultimedia\examples\multimediawidgets\customvideosurface\customvideowidget 의 예제 에서 시작 하려고 합니다. customvideowidget.pro 파일을 Qtcreater 에서..
Multimedia Recipes 멀티 미디어 에서는 득정 프로그램을 만들때 어떠한 클래스가 유용한고 필요한지에 대한 레시피 표를 제공 합니다 . 자세한 정보는 http://doc.qt.io/qt-5/multimediaoverview.html 에서 확인 할수 있습니다.
Camera 구현 세부 정보 Detecting and Selecting Camera 사용할수 있는 카메라의 정보에 접근 할수 있습니다. bool checkCameraAvailability() { if (QCameraInfo::availableCameras().count() > 0) return true; else return false; }여러대의 카메라를 사용할 수 있는 경우 사용할 것을 지정할 수 있습니다.QList cameras = QCameraInfo::availableCameras(); foreach (const QCameraInfo &cameraInfo, cameras) { if (cameraInfo.deviceName() == "mycamera") camera = new QCamera(cam..