在 QML 程序中播放 iOS 上的音频文件
Play audio files on iOS in a QML program
在下面的QML项目中,我想播放音频文件(kimya.mp3,在项目的sounds文件夹中目录)当项目安装在 iOS 上时,通过触摸屏幕上的绿色矩形。
.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 无论我触摸绿色矩形,都没有播放声音!
请问您有这方面的经验吗?
更简单的方法是将声音文件添加到qrc并执行:
音效{
编号:playExplosion
来源:"qrc:/assets/test.wav"
体积:1.0
}
在下面的QML项目中,我想播放音频文件(kimya.mp3,在项目的sounds文件夹中目录)当项目安装在 iOS 上时,通过触摸屏幕上的绿色矩形。
.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 无论我触摸绿色矩形,都没有播放声音!
请问您有这方面的经验吗?
更简单的方法是将声音文件添加到qrc并执行:
音效{ 编号:playExplosion 来源:"qrc:/assets/test.wav" 体积:1.0 }