QMediaPlayer period() 始终返回 0

2023-12-12

我用的是Qt 5.7 我正在编写音乐播放器,有一个问题。方法duration() of QMediaPlayer总是返回 0。我该如何修复它?

代码示例:

QMediaPlayer *player = new QMediaPlayer;
player->setMedia(QMediaContent(QUrl(path)));
qDebug() << player->duration(); // returns 0
player->play(); // it works

你不能做一个player->duration()就在之后player->setMedia(QMediaContent(QUrl(path)));.

确实,QMediaPlayer::setMedia is 异步因此,如果您在其之后调用持续时间,则媒体尚未设置,然后持续时间将是错误的。

From setMedia 上的 Qt 文档:

注意:该函数在录制指定的媒体源后立即返回。它不会等待媒体完成加载,也不检查错误。

当持续时间更新时,QMediaPlayer 发送一个名为durationChanged(qint64 duration)。因此,您需要做的就是将此信号与 lambda 或槽连接。

例如,

QMediaPlayer *player = new QMediaPlayer(this);
connect(player, &QMediaPlayer::durationChanged, this, [&](qint64 dur) {
    qDebug() << "duration = " << dur;
});
QUrl file = QUrl::fromLocalFile(QFileDialog::getOpenFileName(this, tr("Open Music"), "", tr("")));
if (file.url() == "")
    return ;
player->setMedia(file);
qDebug() << player->duration();
player->setVolume(50);
player->play();

首先qDebug 将写入 0就像你的但 lambda 中的第二个一样写入 QMediaPlayer 的新持续时间.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QMediaPlayer period() 始终返回 0 的相关文章

随机推荐

  • 纯 CSS 旋转动画在无限循环中损坏

    自从我在这里问问题以来已经有一段时间了 所以如果我做错了什么请原谅 我有一个问题CSS动画 我希望我的动画不断重复但不失去最初的效果 然而 我的代码或 CSS 动画行为似乎存在错误 首先完成后2 个旋转动画 旋转 旋转 定义的 循环开始 但
  • 查询优化:选择相交点的多边形

    我有两个 Oracle 18c 表 ply 多边形 4970 行 pnt 点数 3500 行 形状存储在 SDO GEOMETRY 列中 编辑 我现在意识到大多数点都是重复的 空间上 但我认为这不是问题 数据可以在这里查看 数据库小提琴 我
  • 在 Postgresql 的 where 子句中使用 Alias 列

    我有一个这样的查询 SELECT jobs CASE WHEN lead informations state IS NOT NULL THEN lead informations state ELSE NEW END AS lead st
  • Three.js Raycaster在浏览页面时发生偏移

    如果场景没有显示在整个页面上并且您可以滚动 Raycast 将停止工作并被您滚动的内容所抵消 向一侧滚动 20 像素 在对象下方 20 像素处单击 以便 Raycaster 正确识别该对象 如何解决这个问题 非常感谢您的帮助 使用 var
  • 如何计算句子中的单词数,忽略数字、标点符号和空格?

    我该如何计算句子中的单词数 我正在使用Python 例如 我可能有以下字符串 string I am having a very nice 23 day 那将是7个字 我在处理每个单词前后的随机空格数以及涉及数字或符号时遇到问题 str s
  • R 消息:错误 - 替换有 x 行,数据有 y

    我正在尝试使用该包ggmap使用地址列表计算目标地址的距离 我的 csv 数据如下所示 Order ID Address 1652049 435 E 70TH ST 10021 1652123 1365 YORK AVE 10021 165
  • Sonar Lint 与服务器规则不同步

    Sonar Lint 2 0 它已连接到我自己的 Sonar Qube 服务器 插件没有报告任何问题 问题是它与我的服务器规则不同步 找到了 Java 文档中提到的那些 但它们似乎也不是全部 我想知道这些java规则列表是否仅在未连接到任何
  • 将十六进制编码的字符串转换为字符串

    我想转换以下十六进制编码String在斯威夫特 3 中 dcb04a9e103a5cd8b53763051cef09bc66abe029fdebae5e1d417e2ffc2a07a4 至其等价物String J 7c f A 以下网站可以
  • R Shiny radioButtons 如何更改某些选项的颜色?

    ui lt fluidPage radioButtons dist Distribution type c Normal norm Uniform unif Log normal lnorm Exponential exp server l
  • Bootstrap 3 简单的下拉菜单不起作用

    当尝试调整到Bootstrap 3时 我遇到了以下问题 当我单击名为的按钮时F 我想Home and Not Home出现 但目前还没有 This是我正在学习的视频 div class navbar navbar inverse navba
  • 包装类的代码生成器

    您知道有一种工具可以根据另一个类生成包装类吗 编辑 通过包装类 我的意思是包装所有公开的 公共 受保护 属性方法事件的类 以便您可以将任何逻辑放在中间 我的具体目的是用它来验证包装类的行为 您可以使用 T4 模板并编写自己的逻辑 http
  • 无法连接到在 VSTS 中运行的 Docker 容器

    我有一个测试 启动 Docker 容器 执行验证 与 Docker 容器中的 Apache httpd 通信 然后停止 Docker 容器 当我在本地运行此测试时 此测试运行得很好 但当它运行时托管VSTS 因此托管构建代理 无法连接到Do
  • 如何使用 ggplot2 和刻度格式化带有指数的轴标签?

    使用新版本的 ggplot2 和刻度 我无法弄清楚如何以科学计数法获取轴标签 例如 x lt 1 4 y lt c 0 0 0001 0 0002 0 0003 dd lt data frame x y ggplot dd aes x y
  • 如何使用 RestSharp 将对象(作为 XML)发布到我的 ApiController?

    我有一个实现 REST API 的 ASP NET MVC4 网站 我从客户端应用程序使用该网站 我的 ApiController 方法接受并返回 XML 形式的复杂对象 我最近发现了 RestSharp 并开始将我的客户项目转移到该项目上
  • 命令行中的 Java 键侦听器

    大多数演示都显示 Swing 中的 keyevent 命令行中的等效项是什么 Swing 与命令行环境不同 因为您没有events在控制台窗口中 标准 GUI 处理对象和事件 控制台没有这样的等效概念 你什么dohas 是一个标准输入 以及
  • C# winforms 绘制位图无效参数

    我已经制作了一个应用程序 我需要函数drawbitmap 来打印我的面板 当我按下按钮 btnUpdate 12 次或更多次时 我在此规则上收到参数异常 无效参数 panel1 DrawToBitmap bmp1 new Rectangle
  • ffmpeg 对视频的棕褐色效果

    如何使用 FFmpeg 应用视频的简单棕褐色效果 我正在寻找一个单行 FFmpeg 命令 我将在 android 中使用它 虽然我已经学会了colorchannelmixer 393 769 189 0 349 686 168 0 272
  • Apache 对 /srv/www 的权限被拒绝:无法检查 .htaccess 文件,但不能检查 /var/www

    我在 Centos 6 5 上遇到了一个问题 Mon Dec 28 12 10 52 2012 a client 127 0 0 1 13 权限被拒绝 srv www website htaccess pcfg openfile 无法检查
  • node-gyp 编译错误 c2240 无法从 'v8::Value *' 转换为 'v8:object *volatile'

    2440错误指向 node gyp 4 4 5 include node v8 h 221 所以我不知道出了什么问题 附注在 Windows 机器上编译 有什么方法可以找出哪个句子导致了这个错误 这是我第一次使用node gyp 谢谢 这里
  • QMediaPlayer period() 始终返回 0

    我用的是Qt 5 7 我正在编写音乐播放器 有一个问题 方法duration of QMediaPlayer总是返回 0 我该如何修复它 代码示例 QMediaPlayer player new QMediaPlayer player gt