问题标签 [qmediaplayer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
238 浏览

qt - QMediaPlayer 和 QVideoWidgets 状态

如果 QMedia 对象正在运行,我如何检查它的状态?我想在关闭 vw 后立即停止播放器。有我的播放器和 vw 的代码:

谢谢

0 投票
1 回答
906 浏览

c++ - 无法使用 QMediaPlayer 播放电影

我尝试在 OS X El Capitan v10.11.6 上使用 Qt5 播放电影。我使用 QMediaPlayer、QMediaPlaylist 和 QVideoWidget 来播放。

编写与 Qt 文档相同的源代码,但它只显示黑色窗口,不播放任何电影。

这是我的源代码。

主文件

主窗口.h

主窗口.cpp

我检查“box.mp4”是否存在于同一目录中。

问题出在哪里?我应该如何修复源代码来解决这个问题?

0 投票
2 回答
1799 浏览

c++ - QMediaPlayer - 播放加载到内存中的声音

案例 1.我设法用 QMediaPlayer 播放声音,如下所示:

案例2。如果我将声音加载到内存中并像这样播放它,一切都很好:

问题是当我尝试播放不是真实声音的文件时,例如file.txt. 在第一种情况下,玩家立即停止。在第二种情况下,玩家保持状态PlayingState( QMediaPlayer::BufferedMedia, QMediaPlayer::NoError)

文档:

无效 QMediaPlayer::setMedia(const QMediaContent &media, QIODevice *stream = Q_NULLPTR)

设置当前媒体源。

如果提供了流;将从中读取媒体数据,而不是解析媒体源。在这种情况下,媒体源仍可用于解析有关媒体的附加信息,例如 mime 类型。流必须是开放且可读的。

将媒体设置为空 QMediaContent 将导致播放器丢弃与当前媒体源相关的所有信息并停止与该媒体相关的所有 I/O 操作。

因此,如果我使用media->setMedia(QMediaContent(), buffer);媒体播放器,则由于 QMediaContent 为空,因此媒体播放器将从内存中读取数据而无需附加信息作为 mime 类型。由于缺少 mime 类型,可能 mediaplayer 仍处于 PlayingState,试图播放内存中加载的文本文件。

所以我尝试将有效的 QMediaContent 与加载的数据结合使用......结果相同:媒体播放器保持在 PlayingState 中而没有任何错误。 media->setMedia(QMediaContent(QUrl::fromLocalFile(QFileInfo(s).absoluteFilePath())), buffer);

如何使用 QMediaPlayer 播放加载到内存中的声音以避免此问题?

0 投票
0 回答
950 浏览

c++ - Qt QMediaPlayer - QThread::start: 无法创建线程

我开发了一个应用程序,用户可以同时播放多个声音。为此,我QMediaPlayer结合使用矩阵来分别保存每个声音。代码很简单,对于每个声音,我使用这样的代码:

一切都好。但是在播放声音 115-125(同步声音)时,新声音会发出error(QMediaPlayer::ResourceError)带有错误代码的信号:QMediaPlayer::ResourceError - A media resource couldn't be resolved. 在发出错误信号之前,它会在输出此消息时打印:DirectShowPlayerService::doPlay: Unresolved error code 0x80004005 ()

这不是问题,因为我一检测到这个错误就会删除这些声音。问题出现在几个QMediaPlayer::ResourceError. 如果我创建一个新声音,输出窗口上会出现一条错误消息:QThread::start: Failed to create thread. 创建新QMediaPlayer实例后出现此错误:

输出:

最后一种QMediaPlayer实例不会发出任何错误。不仅如此,状态是QMediaPlayer::PlayingState. 但是,如果我尝试删除它delete(media)或将媒体设置为 nullQMediaContent media->setMedia(QMediaContent())以使播放器丢弃与当前媒体源相关的所有信息,则应用程序将冻结。这两个操作在其他声音上效果很好。如果我不删除这种QMediaPlayer,我最终没有声音的空间。不知何故QMediaPlayer,实例数量有限QMediaPlayer,我无法删除的每一个都填写这个数字,并且没有空间容纳QMediaPlayer.

问题是:我怎样才能避免这个问题?如果我限制同时声音的数量,正确的QMediaPlayer实例数量是多少?如果我设置一个限制,这个限制对于其他机器来说可能会很高。或者如何正确检测到这个格式错误的 QMediaPlayer 并正确删除它?

另外,如果我等待第一个QMediaPlayer::ResourceError信号来限制声音的数量,这有时为时已晚,因为错误信号会稍后发出,有时应用程序已经创建了一个QMediaPlayer我无法删除的畸形,这会阻止进程关闭.

0 投票
1 回答
1626 浏览

c++ - 如果我用它调用函数 QMediaPlayer.play() 不起作用

我正在使用 Qt 创建一个音频播放器,并且我正在实现它,当我加载一首歌曲时它会自动启动,但是当我调用启动歌曲的函数并计算持续时间时,歌曲不会开始。我使用了调试,当我到达播放功能时,调试在结束步进范围内停止。我也尝试过发出信号但无事可做,只有按下播放按钮时歌曲才会开始。

这里有代码

和连接

0 投票
1 回答
1032 浏览

qt - 将 QProgressBar 或 QSlider 连接到 QMediaPlayer 以获得歌曲进度

我想知道如何在 PyQt5 上为 QMediaPlayer 模块获取进度条/搜索器...所以在我的音乐播放器应用程序中,我可以为歌曲提供进度条。先感谢您

0 投票
1 回答
705 浏览

c++ - 如何在 Qt (QMediaPlayer) 上上传 Mp3 文件?

我必须创建一个执行 mp3 文件的 Qt 应用程序。我使用库 QMediaPlayer,如何让用户选择和上传 mp3 文件?

0 投票
1 回答
1732 浏览

python - 尝试使用 QMediaPlayer 添加声音事件

我使用 pyqt5 制作了一个小应用程序,我想播放 5 秒的 mp3。我读到如果我使用 Qt 工具,我不需要使用单独的线程,所以我在这里。

为什么这不起作用,是不是更重要?

我读错了文档吗?

http://doc.qt.io/qt-5/qmediaplayer.html

0 投票
0 回答
502 浏览

c++ - C++ - QMediaPlayer 不发出声音

我正在尝试使用 Qt 制作一个简单的合成器。当您左键单击一个键但没有播放声音时,应该会播放一个音符。我试图寻找解决问题的方法,但没有找到任何有用的方法。由于我对 Qt 还很陌生,我认为问题在于我对框架的工作原理缺乏充分的了解,但我根本无法弄清楚为什么声音不会播放。

我已经设法从 main.cpp 发出声音,并在代码中进一步包含了播放声音和不播放声音时的示例。

希望我已经很好地提出了我的问题,并提前感谢。

0 投票
2 回答
644 浏览

qt - QMediaPlayer::metaData 总是返回 QVariant(Invalid)

我在 MAC OS 上使用 Qt 并尝试检索媒体的元数据。所以我拿了 Qt's Media Player Example (Qt 5.8.0) 并稍作修改:

代替:

我用了:

结果是:

第一个问题:为什么媒体开始播放后元数据不可用?

第二个问题:我在析构函数中添加了一些代码:

现在元数据可用,但没有返回数据:

任何人都可以帮助我吗?


更新问题1:

代替

我用了:

在播放大约 3-5 秒后,元数据已经可用,但它也没有返回任何内容: