Инструменты пользователя

Инструменты сайта


develop:qt:media

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
develop:qt:media [2021/10/31 09:45]
admin
develop:qt:media [2021/11/05 11:38] (текущий)
admin
Строка 1: Строка 1:
 ====== Мультимедия ====== ====== Мультимедия ======
 +
 +**qt += multimedia**\\
  
 {{ :develop:qt:qt-media_0.jpg?direct&600 |}} {{ :develop:qt:qt-media_0.jpg?direct&600 |}}
Строка 5: Строка 7:
  
 ===== QMediaObject ===== ===== QMediaObject =====
 +Предоставляет некоторые базовые функции, которые являются общими для классов более высокого уровня, в основном такие как: **доступность**, **метаданные**, функции для **соединения со вспомогательными классами**.\\
  
 +Классы более высокого уровня обеспечивают фактическую мультимедийную функциональность за счет внутреннего использования **QMediaService** и используют интерфейсы **QMediaControl**, реализованные службой, для реализации своего API.\\
 +Большинство медиа-объектов при создании будут запрашивать новый экземпляр **QMediaService**, но некоторые (QMediaRecorder, QAudioRecorder) могут совместно использовать службу.\\
  
  
-==== ====+==== QMediaService ==== 
 +**Класс устарел, не рекомендуется к использованию**, альтернатива не указана.\\ 
 +Общий базовый класс, для реализации медиа-сервисов.\\ 
 +Из функций толком ничего не указано в доке, видимо выводится из использования, а функционал вынесен в другие классы.\\
  
-==== ==== 
  
 +==== QMediaControl ====
 +Базовый класс для элементов управления медиа-сервисом.\\
 +Из функций тоже ничего не указано, наследуемых классов оч много, очевидно именно в них весь функционал\\
 +"Большая часть кода приложения не будет напрямую взаимодействовать с элементами управления медиа-службой, вместо этого **QMediaObject** действует как посредник, между эл управления и приложением"\\
  
  
 ===== QCamera ===== ===== QCamera =====
 +Предоставляет интерфейс для системных камер.\\
 +Можно использовать с **QCameraViewfinder** для отображения видоискателя, **QMediaRecorder** для записи видео и **QCameraImageCapture** для съемки изображений\\
 +
 +Имеется несколько свойств:
 +  * **captureMode** - тип носителя (CaptureViewfinder (отображение видоискателя); CaptureStillImage (захват изображения); CaptureVideo (захват видео)), изменение режима вызывает изменение статуса камеры. Так же, дается сигнал- **captureModeChanged()**
 +  * **lockStatus** - общий статус всех запрошенных блокировок камеры (фокус/экспозиция и т.д.)
 +  * **state** - текущее состояние камеры (UnloadedState; LoadedState; ActiveState). Есть сигнал
 +  * **status** - текущий статус камеры (ActiveStatus; Starting; StoppingStatus и т.д.). Есть сигнал
 +
 +
 +==== QCameraImageCapture ====
 +Класс для доступа к функциям записи мультимедийных объектов.\\
 +enum **CaptureDestination**: {CaptureToFile; CaptureToBuffer}\\
 +
 +int **Capture(QString)**- захват изображения и сохранение его в файл. Асинхронная, вызываются сигналы типа imageCaptured(), imageSaved(id, name), error().\\
 +Если путь/имя файла не передано в аргументе, используется умолчательные, возвращается в сигналах.\\
 +Возвращает параметр **Id** используемый в упомянутых сигналах\\
 +Перед вызовом стоит проверить готовность камеры, свойство- **isReadyForCapture()**. Есть соответствующий сигнал.\\
 +
 +**imageAvailable(int Id, QVideoFrame)**- сигнал, посылается когда захват установлен в буфер и есть доступный кадр.\\
 +
 +
 +==== QCameraInfo ====
 +Получение информации о доступных в системе камерах.\\
 +Статические ф-ции **defaultCamera()** и **availableCameras()** возвращают доступные устр-ва.\\
 +Можно создавать собственные объекты, ссылающиеся на физ устр-ва\\
 +
 +<details>
 +<summary> :!: Пример: выбор камеры из списка </summary>
 +<code cpp-qt>
 +const QList<QCameraInfo> vCamers= QCameraInfo::availableCameras();
 +for(const QCameraInfo &cameraInfo:vCamers)
 +{
 +  if(cameraInfo.deviceName()== "myCamera")
 +    camera= new QCamera(cameraInfo())
 +}
 +</code>
 +</details>
 +
 +
 +==== QCameraViewfinder ====
 +Виджет видоискателя камеры
 +
 +<details>
 +<summary> :!: Пример: использование QCameraViewfinder</summary>
 +<code cpp-qt>
 +camera= new Camera;
 +viewfinder= new QCameraViewfinder();
 +viewfinder->show();
 +
 +camera->setViewfinder(viewfindeer);
 +
 +imageCapture= new QCameraImageCapture(camera);
 +camera->setCaptureMode(QCamera::CaptureStillImage);
 +camera->start();
 +</code>
 +</details>
 +
 +
 +==== QCameraFocus ====
 +Позволяет настраивать фокусировку и масштабирование.\\
 +Масштабирование может быть **оптическим** (более дорогое но более качественное, используются сенсоры камеры поэтому может не поддерживаться) либо **цифровым** (простое увеличение части рамки).\\
 +**maximumOpticalZoom()** позволяет проверить поддержку оптического зума, **zoomTo()** позволяет одновременно изменять оптическое и цифровое масштабирование.\\
 +
 +Некоторое оборудование поддерживает автофокусировку, можно использовать с помощью **FocusPointMode**. Можно использовать в сочетании с **QCameraFocusZone**.\\
 +
 +<details>
 +<summary> :!: Установить фокус в нижней части, 25% от угла.. вроде как</summary>
 +<code cpp-qt>
 +QCameraFocus *focus= camera->focus();
 +focus->setFocusMode(QCameraFocus::FocusPointCustom);
 +focus->setCustomFocusPoint(QPointF(0.25f, 0.75f));
 +
 +// super zoom
 +focus->zoomTo(3.0, 4.0);
 +</code>
 +</details>
 +
 +
 +
  
  
-==== ==== 
  
-==== ==== 
  
develop/qt/media.1635673529.txt.gz · Последнее изменение: 2021/10/31 09:45 — admin