Несколько способов использования QT для воспроизведения аудиофайлов: QSound, QSoundEffect, QMediaPlayer
Несколько способов использования QT для воспроизведения аудиофайлов: QSound, QSoundEffect, QMediaPlayer

1. Знакомство с окружающей средой

Версия QT: QT5.12

Операционная система: Ubuntu18.04, Windows10.

Чтобы использовать классы QT, связанные со звуком, вам необходимо добавить: QT += multimedia в файл проекта QT pro.

2. Используйте QSound для воспроизведения аудиофайлов формата WAV (несжатых аудиофайлов): самый простой способ воспроизведения.

2.1 Статический метод игры: Этот метод создаст подпоток для воспроизведения в фоновом режиме. Его лучше вызывать в основном потоке. При вызове этой функции в подпотоке для воспроизведения аудиофайла будет выдано предупреждение: 。QObject: Cannot create children for a parent that is in a different thread. (Parent is QApplication(0x7ffc5e9f21f0), parent's thread is QThread(0x55ddf74113e0), current thread is QThread(0x7ffc5ebb6588)

Язык кода:javascript
копировать
#include <QSound>
//Путь к файлу может быть путем к файлу ресурсов или путем к локальной файловой системе
QSound::play("/mnt/hgfs/linux-share-dir/666.wav");

2.2 Загрузка файлов для воспроизведения

Язык кода:javascript
копировать
#include <QSound>   
QSound *bells =new QSound("/mnt/hgfs/linux-share-dir/666.wav");
bells->play();

три、использоватьQSoundEffectигратьАудиофайлы формата WAV (несжатые аудиофайлы): подходят для звуков подсказок.

Язык кода:javascript
копировать
#include <QSoundEffect>
QSoundEffect *effect=new QSoundEffect;
effect->setSource(QUrl::fromLocalFile("/mnt/hgfs/linux-share-dir/666.wav"));
effect->setLoopCount(1);  //Количество циклов
effect->setVolume(0.25f); //объем  Между 0~1
effect->play();

4. Используйте QMediaPlayer для воспроизведения аудиофайлов: подходит для музыкального проигрывателя.

4.1 Воспроизведение аудиофайлов формата wav

Язык кода:javascript
копировать
#include <QMediaPlayer>
QMediaPlayer *player = new QMediaPlayer;
player->setMedia(QUrl::fromLocalFile("/mnt/hgfs/linux-share-dir/666.wav"));
player->setVolume(50); //диапазон громкости 0~100, по умолчанию 100
player->play();

4.2 Воспроизведение аудиофайлов формата mp3

Язык кода:javascript
копировать
    #include <QMediaPlayer>
    QMediaPlayer *player = new QMediaPlayer;
    //Подсказка о ходе воспроизведения
    connect(player, SIGNAL(positionChanged(qint64)), this, SLOT(positionChanged(qint64)));
    player->setMedia(QUrl::fromLocalFile("/mnt/hgfs/linux-share-dir/xiaotiaowa.mp3"));
    player->setVolume(50); //диапазон громкости 0~100, по умолчанию 100
    player->play();
boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода