我想小音频片段对于许多应用来说是必需的,因此我希望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系统的解决方案?非常感谢。
答案 0 :(得分:0)
您的代码无法正常运行,因为media
属性requires是有效的QMediaContent
实例:
将此属性设置为空QMediaContent将导致播放器 丢弃与当前媒体源有关的所有信息 停止与该媒体相关的所有I / O操作。
还没有办法告诉QMediaPlayer
数据的格式是什么,您只是在其上转储原始数据。原则上QMediaResource
可以保存此信息,但它需要一个URL,如果没有它,则视为null。
正如您可能已经猜到的那样,QMediaPlayer
和相关类是不是为此类事物而设计的高级构造。您需要使用QAudioDecoder
实际解码原始数据,并将输出传输到QAudioOutput
以听取它。