4

Windows 8 Pro x64 で Qt Creator 2.7.2 (Qt 5.1) を使用しています。QMediaPlayer に問題があります。私の PC には、Windows Media Player で正常に動作する MP3 ファイルがいくつかありますが、QMediaPlayer では再生できません。以下の記述:

void MainWindow::onPlayerStateChanged(QMediaPlayer::State state)
{
    qDebug() << "onPlayerStateChanged" << state
             << media_player.error() << media_player.errorString();
    // ....
}

stateChanged次の出力をスローするメディア プレーヤーの信号に接続されているスロットです。

onPlayerStateChanged QMediaPlayer::PlayingState QMediaPlayer::NoError "" 
DirectShowPlayerService::doRender: Unresolved error code 80040266
onPlayerStateChanged QMediaPlayer::StoppedState QMediaPlayer::ResourceError "" 
DirectShowPlayerService::doRender: Unresolved error code 80040266

何が問題なのですか?

4

1 に答える 1

3

ファイルの ID3 タグに関係している可能性があります。

同様の問題がありました。QMediaPlayer でいくつかの MP3 ファイルを再生しようとしていました。ファイルの 1 つはそのエラーを生成しましたが、他のファイルは正常に再生されました (Windows 7 の場合)。ただし、Linux では、すべて問題なく動作しました。

そのため、MP3 ファイルに対して「file」コマンドを実行したところ、問題のある MP3 ファイルには ID3 バージョン 2.4.0 タグがあり、他のすべてのファイルには ID3 バージョン 2.3.0 が含まれていることがわかりました。ID3タグエディターを使用してそのファイルのID3タグを完全に削除した後、ファイルは正常に再生されました。

ここでの推測: Windows で QMediaPlayer によってバックエンドとして使用される DirectShow は、ID3 バージョン 2.4 でチョークし、古いバージョンのみを認識します。また、Linux 上の QMediaPlayer は GStreamer をバックエンドとして使用しますが、これにはその問題はありません。

于 2014-03-24T21:36:43.607 に答える