Пишу электронный учебник, в котором потребовалось вывести в QWebView аудио и видео без использования Flash.
Посмотрел как реализовано подключение Flash в Arora и набросал примерно такой класс
class WebPluginFactory : public QWebPluginFactory
{
Q_OBJECT
public:
WebPluginFactory(QWidget *widgetParent, QObject *parent = 0);
~WebPluginFactory();
QObject *create(const QString &mimeType, const QUrl &url, const QStringList &argumentNames, const QStringList &argumentValues) const;
QList<QWebPluginFactory::Plugin> plugins() const;
void refreshPlugins();
private:
QWidget *widgetParent;
};
#include "videoframe.h"
#include "audioframe.h"
#include <QUrl>
WebPluginFactory::WebPluginFactory(QWidget *widgetParent, QObject *parent) :
QWebPluginFactory(parent),
widgetParent(widgetParent)
{
}
WebPluginFactory::~WebPluginFactory()
{
}
QObject *WebPluginFactory::create(const QString &mimeType, const QUrl &url, const QStringList &, const QStringList &) const
{
if (mimeType == "application/book-video"){
videoFrame *frame = new videoFrame(url.toString(), true, 0);
connect(widgetParent, SIGNAL(destroyed(QObject *)), frame, SLOT(close()));
return (QObject *)(frame);
}
if (mimeType == "application/book-audio"){
audioFrame *frame = new audioFrame(url.toString(), false);
connect(widgetParent, SIGNAL(destroyed(QObject *)), frame, SLOT(close()));
return (QObject *)(frame);
}
return NULL;
}
QList<QWebPluginFactory::Plugin> WebPluginFactory::plugins() const
{
MimeType mime;
QWebPluginFactory::Plugin plug;
QList<QWebPluginFactory::Plugin> rez;
mime.name = "application/book-video";
plug.mimeTypes.append(mime);
rez.append(plug);
mime.name = "application/book-audio";
plug.mimeTypes.append(mime);
rez.append(plug);
return rez;
}
void WebPluginFactory::refreshPlugins()
{
}
Используется код так.
ui->webView->page()->settings()->setAttribute(QWebSettings::PluginsEnabled, true);
ui->webView->page()->setPluginFactory(new WebPluginFactory(ui->webView));
В принципе код работает и на месте
<object type="application/book-video" data="file://{путь к видео}"></object>
Появляется корректно работающий плеер, но при этом в консоль вываливается много мата
** (<unknown>:21467): DEBUG: NP_Initialize
** (<unknown>:21467): DEBUG: NP_Initialize succeeded
** (<unknown>:21467): DEBUG: NP_Initialize
** (<unknown>:21467): DEBUG: NP_Initialize succeeded
** (<unknown>:21467): DEBUG: NP_Initialize
** (<unknown>:21467): DEBUG: NP_Initialize succeeded
** (<unknown>:21467): DEBUG: NP_Initialize
** (<unknown>:21467): DEBUG: NP_Initialize succeeded
java version "1.6.0_20"
OpenJDK Runtime Environment (IcedTea6 1.9.7) (6b20-1.9.7-0ubuntu1~10.04.1)
OpenJDK Client VM (build 19.0-b09, mixed mode, sharing)
Может я где-то допустил ошибку или написал что-то не так? Подскажите как исправить.