2014-12-09 4 views
1

im пытается использовать Qt-библиотеку QtMultiMedia для воспроизведения музыки. Я хочу, чтобы он поддерживал формат .flac. Я запускаю Windows 8.1, я установил кодеки flac с http://xiph.org/dshow/. BTW отлично работает с mp3.Поддержка QtMultimedia flac

Пример кода:

QMediaPlaylist plst; 
plst.addMedia(QUrl::fromLocalFile("path/file.flac")); 
QMediaPlayer pl; 
pl.setPlaylist(plst); 
pl.play(); 

Это ничего не играет.

+0

Путь неправильный, вы можете использовать '/' в путях, или если вы хотите '\' вам нужно будет его избежать, поэтому используйте: «path \\ file.flac». Также проверьте текущий рабочий каталог, чтобы вы иметь правильный относительный путь (или тест с абсолютным путем) – Zlatomir

+0

Просто используйте '/' для разделителя, Qt сделал его переносным, он переведет все, что ему нужно, на конкретной платформе. – dtech

+0

Путь не проблема, это был просто образец, даже с правильным путём игрок просто не будет играть .flac-файлы – Walto

ответ

0

Я пробовал без QMediaPlaylist и он работал ...

QMediaContent content(QUrl::fromLocalFile("ABSOLUTE_PATH_TO_FILE")); 
QMediaPlayer* player = new QMediaPlayer(); 
player->setMedia(content); 

player->play(); 

Я проверил ваш код и он не работает ... даже абсолютный путь.

МОЖЕТ ДОПОЛНИТЕЛЬНО !!! ==>

У меня появилось сообщение об ошибке gstreamer, которое я проверил и закончил изучение gstreamer ... еще больше сообщений об ошибках с 0.10 и 1.0. Так что я установил все в зависимости от GStreamer (обе версии) и с последним обновлением я, наконец, смог воспроизводить звук в обеих версиях

sudo apt-get install gstreamer1.0-plugins-* gstreamer0.10-plugins-* 

< == ВОЗМОЖНО ДОПОЛНИТЕЛЬНОЕ END

Вашего код все еще не работает , Поэтому я сравнивал ...

Я использовал указатели!

QMediaPlaylist* plst = new QMediaPlaylist(); 
plst->addMedia(QUrl::fromLocalFile("ABSOLUTE_PATH_TO_FILE")); 

QMediaPlayer *pl = new QMediaPlayer(); 
pl->setPlaylist(plst); 

pl->play(); 

Теперь это работает! (не спрашивайте меня, почему ...).

Подводя итог: Указатели и Абсолютный путь [возможно, GStreamer-плагины ...]

Это только решение для Debian ...

Можете ли вы сказать мне, если он работает в Окна?

Как вы его решили?

Если вы закрываете приложение во время игры, вы получаете SegFault.

 Смежные вопросы

  • Нет связанных вопросов^_^