Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用声子连续更新QBuffer(用于音频文件)播放音频文件?_C++_Qt_Cross Platform_Audio Streaming - Fatal编程技术网

C++ 如何使用声子连续更新QBuffer(用于音频文件)播放音频文件?

C++ 如何使用声子连续更新QBuffer(用于音频文件)播放音频文件?,c++,qt,cross-platform,audio-streaming,C++,Qt,Cross Platform,Audio Streaming,我用留声机播放音频文件 场景: 从本地驱动器播放的文件:正常播放。 从远程驱动器播放的文件:由于音频文件在USB设备上,我必须不断更新缓冲区QBuffer并同时播放文件。但由于某些原因,该文件没有在声子播放器中播放。谁能告诉我在缓冲区仍在更新时播放音频文件的正确方法? //代码 Phonon::MediaObject* m_pMediaObject = new Phonon::MediaObject(this); Phonon::AudioOutput* audioOutput = new P

我用留声机播放音频文件

场景:

从本地驱动器播放的文件:正常播放。 从远程驱动器播放的文件:由于音频文件在USB设备上,我必须不断更新缓冲区QBuffer并同时播放文件。但由于某些原因,该文件没有在声子播放器中播放。谁能告诉我在缓冲区仍在更新时播放音频文件的正确方法? //代码

Phonon::MediaObject* m_pMediaObject = new Phonon::MediaObject(this); 
Phonon::AudioOutput* audioOutput = new Phonon::AudioOutput(Phonon::MusicCategory, this); 
Phonon::Path path = Phonon::createPath(m_pMediaObject, audioOutput); 
QBuffer m_pBufferLoop = new QBuffer(this);
m_pBufferLoop->open(QIODevice::Append || | QIODevice::ReadWrite);
functionToUpdateBuffer();//updates the buffer dynamically.

m_pMediaObject->setCurrentSource(m_pBufferLoop);

m_pMediaObject->play();

我打电话给play之后什么也没发生。但是如果我提供完整的缓冲区,那么相同的代码就可以正常工作。

你能发布你正在使用的代码吗?@satuon:代码跨越了几个文件,所以我无法直接发布。但我可以提到我正在努力做的事情:1。创建一个MediaObject,如测试中所示,或者使用::createPlayer和空QBuffer或not empty,以及20%的Wav/MP3文件。2.完全填充缓冲区或填充缺失的80%3。玩什么也不会发生,或者20%的MP3将被播放。它似乎无法接受动态馈送的流数据QBuffer。有什么想法吗?没有看到代码我真的不知道它出了什么问题。但也许有人能帮上忙。@satuon:谢谢你的回复。我可以发布几行代码。希望这有帮助:Phonon::mediaoobject*m_pmediaoobject=new Phonon::mediaoobjectthis;声子::音频输出音频输出=新声子::音频输出声子::音乐范畴,这个;声子::路径路径=声子::createPathm_pMediaObject,音频输出;QBuffer m_pBufferLoop=新的QBufferthis;m|pBufferLoop->openQIODevice::Append | | QIODevice::ReadWrite;函数更新缓冲区//动态更新缓冲区m_pMediaObject->setCurrentSourcem_pBufferLoop;m_pMediaObject->play;调用play后不会发生任何事情。您是否可以编辑您的问题并将代码添加到其中,而不是使用格式?现在读起来有点难。