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



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

这是我的代码经过多次搜索谷歌,包括stackoverflow:

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

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

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

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

你的代码不能工作,因为media属性需要一个有效的QMediaContent实例:

将此属性设置为空qmedicontent将导致播放器丢弃与当前媒体源和to有关的所有信息

停止与该介质相关的所有I/O操作。

也没有办法告诉QMediaPlayer什么格式的数据是在,你只是倾销原始数据在它。原则上QMediaResource可以保存这些信息,但它需要一个url,如果没有url,则被视为空。

您可能已经猜到,QMediaPlayer和相关类是高级结构,不是为这种事情设计的。您需要使用QAudioDecoder来实际解码原始数据,并将输出管道传输到QAudioOutput以接收它。

最新更新