0

Qt を使用してマルチメディア データベース システムを作成しようとしています。QMultimedia を使用して、QVideoWidget でビデオを再生しています。

以下は、QVideo ウィジェットでビデオ ファイルを再生するために使用しているコードです。

 mMediaPlayer = new QMediaPlayer();
  mMediaPlaylist = new QMediaPlaylist();
  QMediaContent content(QMediaResource())
  mMediaPlaylist->addMedia(QUrl::fromLocalFile(QDir(QString("data")).absoluteFilePath(QString("%1.dat").arg(mMedia.GetUID()))));
    mMediaPlayer->setPlaylist(mMediaPlaylist);


    mVideoWidget = new QVideoWidget();
    mMediaPlayer->setVideoOutput(mVideoWidget);
    this->setCentralWidget(mVideoWidget);
    mVideoWidget->show();
    mMediaPlayer->play();

基本的に、たとえば 1.dat という名前のファイルを再生します。これは、名前が変更されたビデオ ファイル (たとえば、video.mp4) です。ただし、ビデオの再生は機能せず、次のエラーが生成されます。

DirectShowPlayerService::doRender: Unresolved error code 80040266

いくつかの Google 検索で、このエラーは、ビデオのフォーマットを再生するために必要なコーデック/フィルターが QMultimedia にないためであることがわかりました。ffmpeg を使用してビデオをさまざまな形式に変換しようとしましたが、 DirectShow でサポートされている形式およびMedia Foundation でサポートされているメディア形式 で指定された形式を試しました。また、Ogg Vorbis、Speex、Theora、FLAC、および WebM 用の Directshow フィルターをインストールして、ビデオを ogg コンテナー内の theora/vorbis に変換しようとしました。まだ行きません。

1 つの mpg ファイルを再生できたので、QMultimedia が機能していることはわかっています。しかし、そのmpgファイルのプロパティを模倣するために別のビデオを変換しようとしましたが、うまくいかないようでした.

QMultimedia がバックエンドのデコードに使用しているシステムは何ですか? サポートされているエンコーディングとコンテナのタイプを確認するにはどうすればよいですか? Qt で独自のデコーダーを作成することは可能ですか?

ありがとう

4

1 に答える 1