Изменения в Qt Multimedia
Qt 6 — результат целенаправленных усилий по повышению эффективности и удобства использования фреймворка.
Мы стараемся поддерживать бинарную и исходную совместимость всех публичных API в каждом релизе. Но некоторые изменения были неизбежны, чтобы сделать Qt лучшим фреймворком.
Модуль был существенно переработан и изменил свою классификацию с «необходимого» на «дополнительный». Модуль Qt Multimedia в Qt 6 заменяет модуль Qt Multimedia из Qt 5.x. Существующий код, использующий Qt Multimedia из Qt 5, может быть портирован с ограниченными усилиями.
Новые возможности в Qt 6
В Qt Multimedia есть ряд новых возможностей:
- QMediaCaptureSession — центральный объект для захвата медиаданных.
- QMediaRecorder — теперь класс, ограниченный записью аудио и видео. Он обрабатывает кодирование данных, полученных в сессии захвата.
- Использование QMediaFormat и QMediaRecorder для настройки желаемой кодировки при записи существенно изменилось.
- Теперь также можно отслеживать аудио, записанное в сессии захвата.
- Добавлена поддержка выбора аудио-, видео- и субтитров при воспроизведении медиафайлов.
- QAudioDecoder теперь поддерживается на всех платформах.
Удаленные возможности
| Удаленная возможность | Примечания или предлагаемая альтернатива |
|---|---|
| Список воспроизведения в QMediaPlayer | QMediaPlayer больше не поддерживает работу со списком воспроизведения в Qt 6. |
| QMediaPlayList | Этот класс был удален из API. Однако он все еще существует как часть примера Media Player. |
| QAudioProbe и QVideoProbe | API аудио- и видео-пробирования было удалено. |
| QAudioRecorder | Используйте QMediaCaptureSession или QML-тип CaptureSession. |
| QML-тип Audio | Используйте QML-тип MediaPlayer. |
| QMediaObject и QMediaBindableInterface | Эти классы были удалены в пользу более прямого API для настройки соединений между объектами, например, с помощью setVideoOutput и QMediaCaptureSession. |
| QCameraViewFinderSettings | Этот класс был удален. Используйте QCameraFormat для определения разрешения и частоты кадров, которые должна использовать камера. |
| QMediaContent | Класс был удален. Используйте QUrl для отдельных медиафайлов вместо него. |
| QSound | Используйте QSoundEffect вместо него. |
| QVideoFilterRunnable | Вместо этого используйте эффекты шейдеров в QML или обратитесь к содержимому QVideoFrame в C++. |
| Общедоступный API бэкенда | API бэкенда Qt Multimedia в Qt 6 является закрытым. Это улучшает время отклика при поддержке новых сценариев использования мультимедиа. Все классы, содержащие слова «Control» или «Abstract» в названии класса в Qt 5, теперь закрыты в Qt 6. |
| Плагины бэкенда | Qt Multimedia в Qt 6 больше не использует инфраструктуру плагинов для своих бэкендов. Это означает, что пользователям больше не нужно поставлять эти бэкенды со своим приложением. Вместо этого используемый бэкенд определяется во время компиляции на основе базовой операционной системы. Qt использует gstreamer в Linux, WMF в Windows, AVFoundation в macOS и iOS и API мультимедиа Android в Android. |
Измененные возможности
Несколько классов, ранее предлагавшихся в Qt Multimedia, изменились таким образом, что может повлиять на ранее написанный код. В следующей таблице выделены эти изменения.
| Измененная возможность | Примечания |
|---|---|
| Обработка разрешений и частоты кадров камеры | Обработка этих параметров была упрощена, и новый класс QCameraFormat помогает выбрать правильное разрешение и частоту кадров для камеры. |
| Обработка видеовывода со стороны C++ существенно изменилась. | QAbstractVideoSurface был заменен классом QVideoSink, и общая поддержка отрисовки была улучшена для поддержки всех форматов пикселей, поддерживаемых Qt Multimedia. |
| Типы метаданных | QMediaMetaData существенно изменился: в основном переключился с ключей на основе строк на ключи на основе перечислений и уменьшил набор поддерживаемых ключей до тех, которые поддерживаются на большинстве платформ. |
| QMediaFormat | Обработка форматов закодированных медиа и параметров медиазаписи существенно изменилась. Qt 5 предоставляет API на основе строк, отдельные форматы файлов и кодеки аудио и видео в трех классах. Однако Qt 6 объединяет форматы в классе QMediaFormat. Дополнительные параметры напрямую задаются в QMediaRecorder. Настройка форматов файлов и кодеков теперь реализована с помощью перечислений и больше не использует строки. Это накладывает некоторые ограничения на набор поддерживаемых кодеков, но помогает обеспечить согласованный кроссплатформенный API. |
| QCameraImageCapture переименован в QImageCapture | Нет |
| Аудиовходы и выходы | QMediaPlayer и QMediaCaptureSession (и соответствующие QML-типы MediaPlayer и CaptureSession) по умолчанию не подключены к аудиоустройствам. Необходимо явно подключить их к QAudioInput/AudioInput или QAudioOutput/AudioOutput для захвата или воспроизведения аудио. |
| Захват видео | Сессия захвата по умолчанию не подключена к камере. Подключите её к объекту QCamera (элемент камеры), чтобы иметь возможность захватывать видео или статичные изображения. |
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qtmultimedia-changes-qt6.html