-1

多くのアプリケーションでは小さなオーディオ クリップが必要だと思います。そのため、QT はメモリ スライスでの mp3 の再生をサポートしていると思います。おそらく、mp3 データをメモリ内の wav データにデコードするのが 1 つの解決策かもしれませんが、最初にすべてのデータをデコードするには時間が必要です。リアルタイム アプリケーションの場合、これはお勧めできません。また、mp3_data をファイルに保存し、QMediaPlayer にそれを再生するように要求することも意味がありません。パフォーマンスは受け入れられません。

これは、stackoverflowを含む、Googleによる多くの検索後の私のコードです:

        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システムのソリューションを持っている人はいますか? どうもありがとう。

4

1 に答える 1

0

mediaプロパティには有効なインスタンスが必要なため、コードは機能しません。QMediaContent

このプロパティを null QMediaContent に設定すると、プレーヤーは現在のメディア ソースに関連するすべての情報を破棄し、そのメディアに関連するすべての I/O 操作を停止します。

またQMediaPlayer、データがどの形式であるかを知る方法もありません。生データをダンプしているだけです。原則QMediaResourceとしてこの情報を保持できますが、URL が必要であり、それがないと null と見なされます。

ご想像のとおりQMediaPlayer、関連するクラスは、この種の目的のために設計されていない高レベルの構成要素です。QAudioDecoder生データを実際にデコードするには a を使用し、出力を a にパイプしQAudioOutputて聞く必要があります。

于 2015-08-14T10:52:19.953 に答える