需要QMediaPlayer在内存中播放mp3数据

时间:2015-08-14 10:00:14

标签: android ios qt mp3 qmediaplayer

我想小音频片段对于许多应用来说是必需的,因此我希望QT支持在内存片中播放mp3。也许将mp3数据解码为内存中的wav数据可能是一种解决方案,但这需要时间来首先解码所有数据。对于实时应用,这不是一个好主意。将mp3_data存储在文件中并要求QMediaPlayer播放它也没有意义,性能是不可接受的。

这是我在google进行多次搜索后的代码,包括stackoverflow:

        m_buffer.setBuffer(&mp3_data_in_memory);
        m_player.setMedia(QMediaContent(), &m_buffer);
        m_player.play();

其中m_buffer是QBuffer实例,mp3_data_in_memory是QBuffteArray实例; m_player是一个QMediaPlayer实例。

我得到一些信息,这里的代码在MacOS和iOS中不起作用,但我现在在Android上运行。

有没有人有Android系统的解决方案?非常感谢。

1 个答案:

答案 0 :(得分:0)

您的代码无法正常运行,因为media属性requires是有效的QMediaContent实例:

  

将此属性设置为空QMediaContent将导致播放器   丢弃与当前媒体源有关的所有信息   停止与该媒体相关的所有I / O操作。

还没有办法告诉QMediaPlayer数据的格式是什么,您只是在其上转储原始数据。原则上QMediaResource可以保存此信息,但它需要一个URL,如果没有它,则视为null。

正如您可能已经猜到的那样,QMediaPlayer和相关类是不是为此类事物而设计的高级构造。您需要使用QAudioDecoder实际解码原始数据,并将输出传输到QAudioOutput以听取它。