3

QT4.X ベースのアプリを QT5 に移行中です。Phonon のサポートは QT5 で削除されたため、QSound を使用するように Wave ファイルを再生するコードを変更しました。

変更は非常に簡単です。マルチメディアライブラリにあるQSoundを使用する必要がありました。コードは次のとおりです。

QSound::play("small_wave_file.wav"); 

私の Wave ファイルのほとんどは、これで問題なく動作します。ただし、私のウェーブ ファイル (44100Hz のサンプル レート) では機能しません。

公式の QT バグはここにあります。

更新: このバグは qt 5.1 で修正されました

4

2 に答える 2

2

一部の wave ファイルが QSound を混乱させることが判明しました。何が問題の原因なのかまだ正確にはわかりません。自分の Wave ファイルを Audacity にロードし、それを変更せずに別の Wave ファイルにエクスポートしたとき (同じサンプルレート...)。QSound はファイルを問題なく再生しました。

MacOSX で、問題のある wave ファイルの [Get Info] をクリックすると、wave ファイルからの一般的な wave 情報レコードが利用できませんでした。そのため、QSound がサンプル レート情報を取得できなかった可能性があります。そして、Wave ファイルから期待されるサンプル レートがわからなかったのでしょうか。

興味深いのは、iTunes が元のファイルを問題なく再生し、何とか正しいサンプル レートを持っていたことです。また、フォノンは元のファイルも問題なく再生していました。

とにかく、うまくいけば、これは QSound::play() メソッドに問題があった一部の人々に役立ちます.

更新: QSound::play() は Mac では非常にバグが多かったため、ネイティブの NSSound を使用して、Mac 上の QT アプリケーションから Wave ファイルを再生することにしました。コードは次のとおりです。

void play_sound( const char* file)
{
    NSSound *sound = [[NSSound alloc] initWithContentsOfFile:[NSString stringWithUTF8String:file] byReference:NO];
    [sound play];
    [sound release];
}
于 2013-01-04T21:54:05.943 に答える