我正在尝试使用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 DirectShow和Supported Media Formats in Media Foundation指定的格式。我还尝试安装Directshow Filters for Ogg Vorbis, Speex, Theora, FLAC, and WebM,并将我的视频转换为ogg容器中的theora / vorbis。仍然没有去。
我应该注意到我确实设法播放了一个mpg文件,所以我知道QMultimedia正在运行。但我尝试转换另一个视频以模仿该mpg文件的属性,但它似乎没有用,所以看起来QMultimedia对它支持的格式非常具体。
QMultimedia使用什么系统进行后端解码?如何找出它支持的编码类型和容器?是否可以在Qt中编写我自己的解码器?
由于
答案 0 :(得分:0)
this文档描述了QMultimedia后端支持的功能。现在不支持渲染到窗口小部件。 我建议使用另一个库来编码/解码多媒体(例如ffmpeg) - QMultimedia现在不稳定,我认为正确的工作只是文档中的例子:(