2014-10-06 3 views
3

Я использую QMediaPlayer Qt 5.3.2 для воспроизведения MP3-файла под OSX 10.10, до сих пор я не мог ничего играть.Qt's QMediaPlayer не может воспроизводить mp3

код я использую примерно так:

player = new QMediaPlayer; 
player->setMedia(QUrl(soundName)); 
qDebug()<<soundName; 
player->setVolume(50); 
player->play(); 

При использовании этого я получаю эту ошибку в «выходе приложения» панели:

[19:32:52.144] FigByteFlumeCustomURLOpen signalled err=-12936 (kFigByteFlumeError_BadState) (no provider) at /SourceCache/CoreMedia/CoreMedia-1562.19/Prototypes/FigHTTP/FigByteFlumeCustomURL.c line 1486 

Сам же код прекрасно работает с ОС Windows 8.

Может ли кто-нибудь помочь?

+0

Может быть, 'errorString()' тоже скажет что-то полезное. – Chernobyl

+0

errorString() пуст при отображении сразу после игры(); – deadbird

+0

Работает ли он с OS X 10.9? – TheDarkKnight

ответ

0

Обнаружили ответ некоторое время назад, разместив его прямо здесь для справок в будущем.

Идея состоит в том, что Qt не может воспроизводить mp3-файл из ресурсов. Сначала файлы необходимо скопировать во временную папку. Ниже приведен способ загрузки файлов из файла файла «mp3» во временный файл:

bool Dialog::loadFiles() { 
    bool success = true; 

    //through mp3 folder of resources 
    QDir rsc(":/mp3"); 
    QStringList files = rsc.entryList(QStringList()<<"*.mp3", QDir::Files); 

    tmpPath = QDir::toNativeSeparators(QDir::tempPath()); 

    foreach(QString s, files) { 
     QString srcPath = QString(":/mp3/%1").arg(s); 
     QString destPath = QString("%1\\%2").arg(tmpPath).arg(s); 
     mp3Files.insert(s, destPath); 
     if (!QFile::exists(destPath)) 
      success &= QFile::copy(srcPath, destPath); 
    } 

    return success; 
} 
Смежные вопросы