未满灬18岁v 2014-10-02 23:36 采纳率: 0%
浏览 1194

qt 安卓下 视频播放问题,windows下一件成功播放,但是安卓下不知道需要什么插件。

我最开始自己写的一段代码,在windows都可以播放,(avi格式的)但是在安卓下就是不能播放,画面,声音都没有。我换了Qt里面的例子,他们也一样。所以我不知道我差在多少。什么地方不可以。求给位大神指点。万分感谢!(安卓下mp3也不能播放)

  • 写回答

1条回答

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2023-03-22 13:31
    关注

    该回答引用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() 函数开始播放音频文件。


    希望这些示例可以帮助你解决问题。

    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题