我最开始自己写的一段代码,在windows都可以播放,(avi格式的)但是在安卓下就是不能播放,画面,声音都没有。我换了Qt里面的例子,他们也一样。所以我不知道我差在多少。什么地方不可以。求给位大神指点。万分感谢!(安卓下mp3也不能播放)
该回答引用ChatGPT
在 Android 平台上播放视频需要使用 Android 平台支持的多媒体框架。Qt 官方提供了一个多媒体库 QtMultimedia,它可以在 Windows 平台上播放视频和音频。但是,由于 Android 平台上的多媒体框架与 Windows 平台上的不同,因此需要使用 QtAndroidExtras 库来访问 Android 平台的多媒体框架。
以下是一个简单的示例,演示如何在 Android 平台上播放视频:
#include <QtAndroidExtras>
#include <QUrl>
...
QString videoFilePath = "/sdcard/video.mp4"; // 视频文件路径
QAndroidJniObject uri = QAndroidJniObject::callStaticObjectMethod("android/net/Uri",
"parse",
"(Ljava/lang/String;)Landroid/net/Uri;",
QAndroidJniObject::fromString(videoFilePath).object());
QAndroidJniObject intent("android/content/Intent", "(Ljava/lang/String;)V", QAndroidJniObject::fromString("android.intent.action.VIEW").object());
intent.callObjectMethod("setData", "(Landroid/net/Uri;)Landroid/content/Intent;", uri.object());
intent.callObjectMethod("setType", "(Ljava/lang/String;)Landroid/content/Intent;", QAndroidJniObject::fromString("video/*").object());
QtAndroid::startActivity(intent, 0);
在这个示例中,我们首先获取要播放的视频文件的路径,然后创建一个 QAndroidJniObject 对象来表示该路径的 Uri。接下来,我们创建一个 Intent 对象,用于启动 Android 平台上的视频播放器。我们将 Uri 对象设置为 Intent 对象的数据源,并将媒体类型设置为 video/*,以确保 Android 平台上的视频播放器可以播放该视频文件。最后,我们使用 QtAndroid::startActivity() 函数来启动 Intent 对象。
注意,你需要将 QtAndroidExtras 库添加到你的项目中,并在 .pro 文件中添加以下行:
QT += androidextras
如果你的项目中没有使用 .pro 文件,则可以在 Qt Creator 的项目属性中添加 androidextras 库。
对于 MP3 文件的播放,你可以使用 QMediaPlayer 类来播放。以下是一个简单的示例:
#include <QMediaPlayer>
...
QString audioFilePath = "/sdcard/audio.mp3"; // 音频文件路径
QMediaPlayer *player = new QMediaPlayer;
player->setMedia(QUrl::fromLocalFile(audioFilePath));
player->setVolume(50);
player->play();
在这个示例中,我们创建一个 QMediaPlayer 对象,并将要播放的音频文件设置为媒体源。我们还设置音量为 50,并调用 play() 函数开始播放音频文件。
希望这些示例可以帮助你解决问题。