QMultimedia — Какие видео / аудио кодировки и контейнеры поддерживаются?

Я пытаюсь создать систему мультимедийных баз данных, используя 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. Я также пытался установить Фильтры Directshow для Ogg Vorbis, Speex, Theora, FLAC и WebM, и преобразование моего видео в theora / vorbis в контейнере ogg. Все еще не идти.

Должен отметить, что мне удалось воспроизвести один файл mpg, поэтому я знаю, что QMultimedia работает. Но я попытался преобразовать другое видео, чтобы имитировать свойства этого файла mpg, и оно, похоже, не работает, поэтому кажется, что QMultimedia чрезвычайно специфичен в поддерживаемых форматах.

Какую систему использует QMultimedia для внутреннего декодирования? Как я могу узнать, какие типы кодировок и контейнеров он поддерживает? Можно ли написать свой собственный декодер в Qt?

Спасибо

0

Решение

этот документ описывает функции, поддерживаемые бэкэндами QMultimedia. Визуализация в виджет теперь не поддерживается.
Я рекомендую использовать другую библиотеку для кодирования / декодирования мультимедиа (например, ffmpeg) — QMultimedia сейчас не стабильна, и я думаю, что корректная работа только примеры из документации 🙁

0

Другие решения

Других решений пока нет …