QMediaPlayer无法打开媒体文件

时间:2013-11-13 04:08:54

标签: c++ qt video codec multimedia

我正在尝试在我的应用中设置QVideoWidget,但我没有音频/视频。这就是我创建相关对象的方式:

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下载的测试文件),所以如果有人需要有关它的信息,请问我,我会得到它。以下是在测试文件上运行ffprobe的结果:http://pastebin.com/xpMYbApY

QMediaPlayer->duration();  = -1
QMediaPlayer->supportedMimeTypes(); = ()
QMediaPlayer->errorString() = ""

另外,我有这些gstreamer包:

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-launch-0.10完美播放文件,这是否意味着Qt实际上无法找到已安装的GStreamer编解码器?

2 个答案:

答案 0 :(得分:5)

问题是QMediaPlaylist。出于某种原因,它无法正常工作。我必须做的就是:

m_player->setMedia(QUrl::fromLocalFile("path/to/file"));

答案 1 :(得分:2)

我知道这是一个老问题,但2年后,我遇到了同样的问题。由于我没有足够的回复点来发表评论,我将其作为答案发布。

这对我有用:

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();

here

开始

至于为什么参与@wingleader的回答,我猜是

m_playlist = new QMediaPlaylist(m_player);

逻辑上将播放列表设为播放器,但未设置m_player的播放列表属性。

HTH