问题标签 [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 投票
1 回答
1156 浏览

macos - Qt的QMediaPlayer不能播放mp3

我正在使用 Qt 5.3.2 的 QMediaPlayer 在 OSX 10.10 下播放 MP3 文件,直到现在我还不能播放任何东西。

我使用的代码大致是这样的:

使用它时,我在“应用程序输出”面板中收到此错误:

相同的代码在 Windows 8 上完美运行。

任何人都可以帮忙吗?

0 投票
2 回答
5394 浏览

c++ - How to play streaming audio with QMediaPlayer?

I have audio stream from server that I want to play with QMediaPlayer in my program. Everything works when I first download file to QBuffer and then call setMedia and play method from the player. But if I want to play music while stream is still working, media player only plays sound to the position when setMedia method was called and then stoppes. Is there any possible ways to make it work like I want to? Thank you.

0 投票
1 回答
994 浏览

c++ - QMediaPlayer 和 gstreamer 导致系统崩溃

我目前正在编写一个带有内置音频播放器的应用程序。

当我设置时QMediaPlayer,我(总是)收到以下错误:

有一些关于此的谷歌搜索结果,但我没有找到任何解决方案来解决它。请注意,我不使用千斤顶。

到目前为止,我可以忍受该错误消息,但还有一个更糟糕的问题。大多数情况下,该应用程序运行良好并按预期运行,但偶尔会冻结。整个系统冻结。我可以转动鼠标(帧速率很差),但我不能点击任何东西或与任何其他程序交互。即使切换到文本终端Ctrl+Alt+F1也无济于事,这让我认为驱动程序或内核模块应该存在问题。

我在调试和发布模式下尝试了mp3vorbis,有和没有调试器。总是一样。没有其他警告、错误等。从控制台启动应用程序时也会发生错误(之前运行的可执行文件没有任何问题)。

系统:

导致问题的代码部分:

上次系统更新/升级是在 2014 年 11 月 9 日。

顺便说一句,整个项目都公开托管在 github 上我在这里也问了同样的问题,但没有得到任何答案。抱歉多发帖。

0 投票
1 回答
2211 浏览

c++ - 强制 QMediaPlayer 为视频擦洗应用程序准确更新位置?

我正在编写一个应用程序,它允许用户浏览打开的视频。使用 Qt 5.3 在 Windows 7/8 上进行开发,我一直在使用QMediaPlayerQVideoWidget关注qvideowidget示例项目。结果非常好,除了QVideoWidget似乎只在空闲时间更新。不过,这是一个好的开始,而且它是可用的。

但是,当我在 Mac OS 10.10(再次使用 Qt 5.3)上构建时,擦洗的行为就像视频中每秒只有一帧一样。当我拖动“位置”滑块时,视频会在一秒钟后从一帧跳到另一帧,然后再过一秒钟,即使我QMediaPlayer::setPosition多次调用这两个帧之间的位置。

可以使用videowidgetQt 5.3 附带的示例在此处重现该问题:Qt\Examples\Qt-5.3\multimediawidgets\videowidget. 在 Windows 机器上拖动滑块时,QVideoWidget会在相距很近的帧之间移动。当在 Mac 上(至少在我的)上拖动滑块时,QVideoWidget帧之间的跳跃间隔大约一秒钟。无论我等待“中间”帧渲染多长时间,除非我点击“播放”按钮,否则它不会发生。

我试过一个接一个地调用QMediaPlayer::play()QMediaPlayer::pause()强制更新,但这似乎不起作用——QMediaPlayer异步工作,所以更新没有时间生效。

如果我检查 的值QMediaPlayer::position,我发现它在这些跳转之间实际上并没有改变。看来,当我调用时QMediaPlayer::setPosition,它实际上是在 Mac 上将位置四舍五入到一秒增量,而在 Windows 机器上将位置四舍五入。

理想情况下,我想跳到视频中的特定位置并立即在QVideoWidget. 有什么方法可以强制QMediaPlayer准确设置位置并更新相关的QVideoWidget?有没有更好的方法在视频中实现平滑擦洗?

谢谢你的帮助!

0 投票
0 回答
532 浏览

qt - QMediaPlayer:媒体停留在 UnknownMediaStatus

我创建了一个 QMediaPlayer,将视频地址传递给它,它不会播放。我检查了 mediaStatus 和播放器状态,它们一直保持为 0。基本思想是:

mediaStatus 只是一个枚举:MediaStatus { UnknownMediaStatus, NoMedia, LoadingMedia, LoadedMedia, ..., InvalidMedia }

问题是:

  1. 什么可能导致这个问题以及如何解决这个问题?

  2. QMediaPlayer::mediaStatus() 将返回 QMediaPlayer::UnknownMediaStatus 的所有情况是什么(请确定)?


编辑更多信息:以下是我为以下代码获得的输出。任何人都知道错误消息的含义以及如何解决?

代码:

输出:

我使用的是 Mac 10.9 和 Qt 5.3.0,但我认为 mac/qt 版本对这个问题并不重要。

0 投票
1 回答
2413 浏览

qt - Qt 中有没有办法强制 QMediaPlayer 缓冲文件而不播放它?

当您将文件加载到QMediaPlayer实例中时,它不会自动缓冲文件。在您使用 播放文件之前MediaStatus仍然存在,只有在此之后它才会以. 我在文档中找不到任何方法来强制播放器在不播放文件的情况下缓冲文件 - 有没有办法做到这一点?NoMediaplay()BufferedMedia

现在我正计划静音,播放文件,然后再次停止并取消静音,但这让我觉得很脏。当然有更好的方法来做到这一点?

duration顺便说一句,这是必要的,因为在文件缓冲之前我无法检索,并且我需要在轨道中duration选择 aposition以开始播放。

谢谢

0 投票
2 回答
292 浏览

qt - Windows XP 上的 QMediaPlayer (qt 5.3.1)

问题出现在使用 QT 5.3.1 的 Windows xp 上。使用win7,下面的代码在winxp上没有显示任何内容。我重新编译了支持xp的QT,我在mediaservice下也有dsengine.dll,但没有任何改变。

0 投票
2 回答
3577 浏览

c++ - Qt5 QMediaPlayer 使用程序随附的编解码器

我需要编写一个(便携式)程序,除其他外,它能够播放视频文件。Qt5 中的 QMediaPlayer 似乎是显而易见的选择,但显然它只使用安装在执行机器上的编解码器。视频播放器只需要能够在所有(Windows)机器上播放至少一种视频格式,而无需安装任何东西,并将当前状态传达给主程序(以毫秒为单位的当前时间,播放/暂停)。

具体问题:有人可以给我一些提示吗?如何在我的程序中实现视频编解码器,以便 QMediaPlayer 可以在所有机器上可靠地播放视频?或者(但不太喜欢):如何(轻松)在能够完成任务的程序中实现另一个视频播放器?

我已经尝试过使用 libVLC 和一两个其他选项的运气,但到目前为止它从未起作用,而且它似乎使我的程序变得比它必须的复杂得多。

0 投票
0 回答
493 浏览

c++ - QT:通过 tcp 从 vlc 服务器进行视频流式传输

我正在开发一个应用程序,它接收来自 VLC 服务器的广播。我有一个解决方案,但我需要另一个,因为这个不符合我的需要。

我的问题是,有什么方法可以接收带有 QTcpSocket 作为 QByteArray 的视频并使用 QMediaPlayer 播放它。我找到了下面的文章,但它从来没有真正适合我。

从 BYTE* 流中播放 Qt 中的视频?

这是我一直在尝试做的。我使用带有 HTTP 的 VLC 启动一个流,将端口设置为“8080”,我测试的是连接发生了,但似乎我从未从 VLC 获得任何数据,因为 QTcpSocket 的 readReady() 信号从未发出。虽然我可以使用 read/readAll 从中读取数据。

我知道这不是它的工作方式,但正如我想象的那样,我应该能够在 videoWidget 上看到一些结果。

你能帮我怎么做吗?

0 投票
1 回答
672 浏览

qt - 是否可以使用一个 MediaPlayer 控制多个 VideoWidgets?

我想知道是否可以同时在 3 个小部件中使用 Qt5 QtMultimedia 库播放视频。

我有一个视频,我想在 3 个小部件中显示:一个显示完整视频,另一个关注视频中移动的某个对象,最后一个再次关注其他对象。

我现在一直在挣扎,我开始怀疑我的努力是否值得......

有没有人尝试过类似的事情和/或可以给我一些关于如何解决这个问题的提示?