我猜小音频剪辑是必要的许多应用程序,因此我希望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
以接收它。