Я пытаюсь настроить 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?
Проблема была в QMediaPlaylist. По какой-то причине это не сработало. Все, что мне нужно было сделать, чтобы это исправить:
m_player->setMedia(QUrl::fromLocalFile("path/to/file"));
Я знаю, что это старая проблема, но через 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
Свойство плейлиста.
НТН