Создание минимального пользовательского компонента MediaPlayer, передаваемого в VideoOutput - PullRequest
0 голосов
/ 16 января 2019

Я пытался создать пользовательский проигрыватель для iOS, но создание поверхности оказалось довольно сложным для понимания, поэтому я подумал, можно ли просто создать пользовательский MediaPlayer, который мы передаем в QML-ы VideoOutput компонента, так что он обрабатывает видео рендеринг для меня.

Примерно так:

import QtQuick 2.9
import QtQuick.Window 2.3
import QtQuick.Controls 2.2
import QtMultimedia 5.9
import QtQuick.Layouts 1.3

//import MyCustomPlayer 1.0

ApplicationWindow {
    visible: true
    visibility: Window.FullScreen

    // this would be replaced with my custom MediaPlayer defined in "MyCustomPlayer 1.0"
    MediaPlayer { 
        id: player
        source: "http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8"
        autoPlay: true
    }

    VideoOutput {
        id: videoOutput
        source: player
        anchors.fill: parent
    }
}

Таким образом, я бы просто передал свой пользовательский плеер на VideoOutput.

Так как пользовательский проигрыватель должен быть очень похож на оригинальный MediaPlayer сам по себе, я смотрел на исходный код qtmediaplayer, пытаясь понять, как работает реализация.

Я знаю, как сделать базовый компонент, используя qmlRegisterType, но каковы минимальные шаги для работы компонента (получение источника видео и передача его на VideoOutput). Насколько я понимаю, большая часть кода для iOS-плеера находится в папке avfoundation.

Или возможно включить <QtMultimedia/qmediaplayer.h> и переопределить некоторые его функции для создания пользовательского компонента?

Если бы кто-то сделал что-то подобное, это очень помогло бы.

...