QMediaPlayer не может открывать медиа-файлы

Я пытаюсь настроить 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

Решение

Проблема была в QMediaPlaylist. По какой-то причине это не сработало. Все, что мне нужно было сделать, чтобы это исправить:

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

Другие решения

Я знаю, что это старая проблема, но через 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();

Взяты прямо из Вот

Что касается того, почему часть в ответе @ wingleader, я предполагаю

m_playlist = new QMediaPlaylist(m_player);

логически воспитывал плейлист в плеере, но не устанавливал m_playerСвойство плейлиста.

НТН

2

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector