Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.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
Android 需要QMediaPlayer在内存中播放mp3数据_Android_Ios_Qt_Mp3_Qmediaplayer - Fatal编程技术网

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

Android 需要QMediaPlayer在内存中播放mp3数据,android,ios,qt,mp3,qmediaplayer,Android,Ios,Qt,Mp3,Qmediaplayer,我想很多应用程序都需要小的音频剪辑,因此我希望QT支持在内存片中播放mp3。也许将mp3数据解码为内存中的wav数据可能是一种解决方案,但首先需要时间对所有数据进行解码。对于实时应用,这不是一个好主意。将mp3_数据存储在文件中并要求QMediaPlayer播放也没有意义,性能是不可接受的 这是我在谷歌多次搜索后的代码,包括stackoverflow: m_buffer.setBuffer(&mp3_data_in_memory); m_player.se

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

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

        m_buffer.setBuffer(&mp3_data_in_memory);
        m_player.setMedia(QMediaContent(), &m_buffer);
        m_player.play();
其中,m_buffer是QBuffer实例,而_内存中的mp3_数据_是QByteArray实例;m_player是一个QMediaPlayer实例

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


有人有安卓系统的解决方案吗?非常感谢。

您的代码无法工作,因为
媒体属性是有效的
QMediaContent
实例:

将此属性设置为null QMediaContent将导致播放机 放弃所有与当前媒体源相关的信息,并删除 停止与该介质相关的所有I/O操作

也没有办法告诉
QMediaPlayer
数据是什么格式的,您只是在它上面转储原始数据。原则上,
QMediaResource
可以保存此信息,但它需要url,如果没有url,则被视为空


正如您可能已经猜到的,
QMediaPlayer
和相关的类都是高级结构,不是为这类事情而设计的。您需要使用a对原始数据进行实际解码,并将输出传输到a以听到它。

非常感谢您的帮助。但要让QAudioDecoder在Android、iOS和桌面上工作,运气并不好。我最终选择mpg123解码并输出到QAudioOutput。