QMultimedia - 支持哪些视频/音频编码和容器?

时间:2013-09-19 00:32:48

标签: c++ qt video codec

我正在尝试使用Qt制作多媒体数据库系统。我正在使用QMultimedia在QVideoWidget中播放视频。

以下是我用来在QVideo Widget中播放视频文件的代码:

 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

通过谷歌搜索,我发现此错误是因为QMultimedia没有所需的编解码器/过滤器来播放视频格式。我尝试使用ffmpeg将我的视频转换为多种不同的格式,同时尝试在Supported Formats in DirectShowSupported Media Formats in Media Foundation指定的格式。我还尝试安装Directshow Filters for Ogg Vorbis, Speex, Theora, FLAC, and WebM,并将我的视频转换为ogg容器中的theora / vorbis。仍然没有去。

我应该注意到我确实设法播放了一个mpg文件,所以我知道QMultimedia正在运行。但我尝试转换另一个视频以模仿该mpg文件的属性,但它似乎没有用,所以看起来QMultimedia对它支持的格式非常具体。

QMultimedia使用什么系统进行后端解码?如何找出它支持的编码类型和容器?是否可以在Qt中编写我自己的解码器?

由于

1 个答案:

答案 0 :(得分:0)

this文档描述了QMultimedia后端支持的功能。现在不支持渲染到窗口小部件。 我建议使用另一个库来编码/解码多媒体(例如ffmpeg) - QMultimedia现在不稳定,我认为正确的工作只是文档中的例子:(