首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >QMediaPlayer无法打开媒体文件

QMediaPlayer无法打开媒体文件
EN

Stack Overflow用户
提问于 2013-11-13 04:08:53
回答 2查看 3.7K关注 0票数 3

我正试图在我的应用程序中设置一个QVideoWidget,但我没有音频/视频。我就是这样创建相关对象的:

代码语言:javascript
运行
复制
m_player = new QMediaPlayer;

m_playlist = new QMediaPlaylist(m_player);
m_playlist->addMedia(QUrl::fromLocalFile("/home/username/Documents/test.mp4"));

m_widgetVideo = new QVideoWidget;
m_player->setVideoOutput(m_widgetVideo);

m_layout = new QHBoxLayout(this);
m_layout->addWidget(m_widgetVideo);
this->setLayout(m_layout);

m_playlist->setCurrentIndex(0);
m_player->play();

我得到的只是一个黑色的屏幕,没有音频或视频。我不知道是否可以在这里发布MP4文件(这是一个从YouTube下载的测试文件),所以如果有人需要它的信息,只要问我,我会得到它。下面是在测试文件上运行ff探头的结果:http://pastebin.com/xpMYbApY

代码语言:javascript
运行
复制
QMediaPlayer->duration();  = -1
QMediaPlayer->supportedMimeTypes(); = ()
QMediaPlayer->errorString() = ""

此外,我还有这些gstreamer软件包:

代码语言:javascript
运行
复制
gstreamer0.10-alsa
gstreamer0.10-ffmpeg
gstreamer0.10-nice
gstreamer0.10-plugins-bad
gstreamer0.10-plugins-bad-multiverse
gstreamer0.10-plugins-base
gstreamer0.10-plugins-base-apps
gstreamer0.10-plugins-good
gstreamer0.10-plugins-ugly
gstreamer0.10-pulseaudio
gstreamer0.10-tools
gstreamer0.10-x

GST-Laun-0.10完美地播放文件,这是否意味着Qt实际上找不到已安装的GStreamer编解码器?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-15 14:34:23

问题是QMediaPlaylist。因为某种原因,它不起作用。我所要做的就是:

代码语言:javascript
运行
复制
m_player->setMedia(QUrl::fromLocalFile("path/to/file"));
票数 6
EN

Stack Overflow用户

发布于 2016-06-08 04:01:06

我知道这是个老问题,但两年后,我遇到了同样的问题。由于我没有足够的代表点留下评论,我张贴这作为一个答复。

这对我起了作用:

代码语言:javascript
运行
复制
playlist = new QMediaPlaylist;
playlist->addMedia(QUrl("http://example.com/movie1.mp4"));
playlist->addMedia(QUrl("http://example.com/movie2.mp4"));
playlist->addMedia(QUrl("http://example.com/movie3.mp4"));
playlist->setCurrentIndex(1);

player = new QMediaPlayer;
player->setPlaylist(playlist);

videoWidget = new QVideoWidget;
player->setVideoOutput(videoWidget);
videoWidget->show();

player->play();

这里直接取走

至于“翼领队”回答的原因,我猜

代码语言:javascript
运行
复制
m_playlist = new QMediaPlaylist(m_player);

在逻辑上是将播放列表传给播放器,而不是设置m_player的播放列表属性。

HTH

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19945107

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档