Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Phonon::MediaSource from QBuffer


Автор: Owen 16.6.2011, 23:42
Здравствуйте, я новичёк в использовании фонона и столкнулся со следующей проблемой.

Есть мп3 файл, надо его проиграть. Если создать Phonon::MediaSource( "./mediafile.mp3" ); то файл проиграется без проблем.
Однако у меня имеется содержимое этого файла, загруженное в QByteArray. Я пытаюсь проиграть его следующим образом:

Код

   Phonon::AudioOutput audioOutput( Phonon::MusicCategory, NULL );
   Phonon::MediaObject mediaObject( NULL );
   Phonon::createPath( &mediaObject, &audioOutput );

   QFile file( "./about_hackers.mp3" );
   file.open( QIODevice::ReadOnly );
   QByteArray ss( file.readAll( ) );

   QBuffer buff( &ss, NULL );
   buff.open( QIODevice::ReadOnly );

   Phonon::MediaSource source( &buff );
   QObject::connect( &mediaObject, SIGNAL(finished()), &app, SLOT(quit()) );
   mediaObject.setCurrentSource( source );
   mediaObject.play( );

   return app.exec();


Данный код при выполнении выдаёт следующую ошибку:
Код

xine is asking to seek behind the end of the data stream


Кто-нибудь знает, как такое можно обойти или в чём тут проблема? Может я использую неправильный подход?

В моей задаче содержимое файла приходит именно ввиде потока. Можно, конечно, создать файл с нужным именем, но имхо это радикально неправильно.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)