在QML程序中播放iOS上的音频文件

问题描述 投票:1回答:1

在下面的QML项目中,我想在iOS上安装项目时播放音频文件(kimya.mp3,位于项目目录中的sounds文件夹中),方法是触摸屏幕上的绿色矩形。

.pro文件:

QT += quick multimedia
CONFIG += c++11

# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Refer to the documentation for the
# deprecated API to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

SOURCES += \
        main.cpp

RESOURCES += qml.qrc

# Additional import path used to resolve QML modules in Qt Creator's code model
QML_IMPORT_PATH =

# Additional import path used to resolve QML modules just for Qt Quick Designer
QML_DESIGNER_IMPORT_PATH =

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

ios {
    APP_Sounds.files = $$PWD/sounds/kimya.mp3
    APP_Sounds.path = sounds
    QMAKE_BUNDLE_DATA += APP_Sounds
}

main.cpp文件:(完整,无变化)

#include <QGuiApplication>
#include <QQmlApplicationEngine>

int main(int argc, char *argv[])
{
    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);

    QGuiApplication app(argc, argv);
    QQmlApplicationEngine engine;

    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
    if (engine.rootObjects().isEmpty())
        return -1;   
    return app.exec();
}

而且,这是main.qml:

import QtQuick 2.12
import QtQuick.Window 2.12
import QtMultimedia 5.12

Window {
    visible: true
    width: 640; height: 480
    title: qsTr("Hello World")

    Rectangle {
        width: 100; height: 100
        color: "green"
        anchors.centerIn: parent

        MouseArea {
            anchors.fill: parent
            onClicked: playExplosion.play()
        }
    }

     SoundEffect {
        id: playExplosion
        source: "file:///Users/Me/QML/soundTest/soundTest/sounds/kimya.mp3"
    }
}

音频文件可以在其他平台上播放,比如Windows,Android甚至Mac,但是我不知道代码中的哪个地方有问题,当我在iOS上安装这个项目时,无论我触摸绿色矩形,都没有播放声音! 你有这方面的经验吗?

ios iphone audio qml multimedia
1个回答
2
投票

更简单的方法是将声音文件添加到qrc并执行:

SoundEffect {id:playExplosion source:“qrc:/assets/test.wav”volume:1.0}

© www.soinside.com 2019 - 2024. All rights reserved.