Вопрос

Я работаю на пару дней на захватывающих кадрах от объекта фононного медиа. Моя цель - захватить кадры на некоторых интервале, указанном пользователем. Я в первую очередь попытался реализовать слот для сигнала галочка, связанного с Phonon :: MediaObject. Однако из-за того, что сигнал галочка выделяется при первой возможности, иногда может быть небольшое разнообразие во временной разницу ... не так много, что это не работоспособное решение, но все же я продолжал дальше и попробовал комбинацию искать и Grabwidget Этот поиск требует некоторого времени для завершения и не имеет никакого способа уведомить приложение, когда видео снова работает нормально, это вызывает код как

obj->seek(i*m_grabInterval);
QPixmap image = QPixmap::grabWidget(m_ui.videoPlayer);
.

Чтобы сохранить черное изображение 90% времени, но правильно захватить кадр оставшиеся времена.

Мой вопрос в том, что есть что-то, что я могу сделать с любыми из этих двух идей, которые заставят их лучше для меня работать, или я сильно лаю не на том дереве, и есть гораздо более очевидно, что я полностью пропустил? .

Спасибо заранее!

Это было полезно?

Решение

Вы лаете неправильное дерево, Это следуетРабота, создайте QIMAGE с помощью Snapshot () Func с фонона :: Videowidget

Редактировать

Я исследовал этот вопрос дальше.Функция Snapshot даже не реализована.Вот реализация в фононном SRC VideoWidget.CPP:

QImage VideoWidget::snapshot() const {
    P_D(const VideoWidget);
    ConstIface<IFACES4> iface(d);
    if(iface) return iface->snapshot();
    return QImage(); // TODO not implemented in VideoInterface
}
.

ifaces4 ссылается на videowidgetInterface44, который определяется для фонона 4.4 следующим образом (от VideowIdgetInterface.h):

class VideoWidgetInterface
{

    public:
        virtual ~VideoWidgetInterface() {}
        virtual Phonon::VideoWidget::AspectRatio aspectRatio() const = 0;
        virtual void setAspectRatio(Phonon::VideoWidget::AspectRatio) = 0;
        virtual qreal brightness() const = 0;
        virtual void setBrightness(qreal) = 0;
        virtual Phonon::VideoWidget::ScaleMode scaleMode() const = 0;
        virtual void setScaleMode(Phonon::VideoWidget::ScaleMode) = 0;
        virtual qreal contrast() const = 0;
        virtual void setContrast(qreal) = 0;
        virtual qreal hue() const = 0;
        virtual void setHue(qreal) = 0;
        virtual qreal saturation() const = 0;
        virtual void setSaturation(qreal) = 0;
        virtual QWidget *widget() = 0;
        virtual int overlayCapabilities() const = 0;
        virtual bool createOverlay(QWidget *widget, int type) = 0;
       };

     class VideoWidgetInterface44 : public VideoWidgetInterface
    {
      public:
         virtual QImage snapshot() const = 0;
    };
}

#ifdef PHONON_BACKEND_VERSION_4_4
   namespace Phonon { typedef VideoWidgetInterface44 VideoWidgetInterfaceLatest; }
#else
   namespace Phonon { typedef VideoWidgetInterface VideoWidgetInterfaceLatest; }
#endif
.

Я также смотрел на реализации Gstreamer и VLC Backends.Они еще не поддерживают функциональность снимков с Phonon 4.4.Поэтому на время, когда я буду искать другие способы создания снимков.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top