Я пытался получить собственный iOS
плеер в качестве пользовательского QML
компонента и смог сделать это благодаря this .Однако я сталкиваюсь с проблемой порядка z компонента.
Конструктор компонента:
MyVideoView::MyVideoView(QQuickItem *parent /*= 0*/)
: QQuickItem(parent)
, m_view(0)
{
connect(this, SIGNAL(windowChanged(QQuickWindow*)), this, SLOT(onWindowChanged(QQuickWindow*)));
connect(this, SIGNAL(visibleChanged()), this, SLOT(onVisibleChanged()));
}
Реализация onWindowChanged:
void MyVideoView::onWindowChanged(QQuickWindow* window)
{
if(!m_view) {
}
if (window != 0) {
UIView *parentView = reinterpret_cast<UIView *>(window->winId());
AVPlayer *_player;
AVURLAsset *_asset;
AVPlayerItem *_playerItem;
AVPlayerLayer *m_playerLayer;
_player = [[AVPlayer alloc] init];
NSURL *baseURL = [[NSURL alloc] initWithString: @"http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8"];
_asset = [AVURLAsset assetWithURL:baseURL];
_playerItem = [AVPlayerItem playerItemWithAsset: _asset];
[_player replaceCurrentItemWithPlayerItem:_playerItem];
m_playerLayer = [AVPlayerLayer playerLayerWithPlayer:_player];
m_playerLayer.frame = CGRectMake(this->x(), this->y(), this->width(), this->height());
[parentView.layer addSublayer:m_playerLayer ];
[_player play];
} else {
[m_view removeFromSuperView];
}
}
С этим я могу использоватькомпонент в моем приложении, который является ApplicationWindow
, но проблема в том, что компонент всегда находится сверху, покрывая все приложение, даже если я установил:
MyVideoView {
z:-3
width: 300
height: 200
x:20
y:300
}
или поместил z другого компонента, например, 300
.Я предполагаю, что это из-за QQuickWindow или вызвано UIView
.Изменить: MyVideoView
находится внутри Item
компонента
Чего я хотел бы добиться, это:
- либо сделать возможным установить компоненты z порядка
- или получить компонент "позади" приложения (создание прозрачной части в моем приложении, чтобы видео было видно, не лучшее решение, но у меня заканчиваются варианты)
Есть лиспособ достижения одного из них, или это можно сделать, если компонент представляет собой что-то еще, кроме QQuickItem
, поскольку единственная часть, которая мне действительно нужна, это уровень проигрывателя, так как я создам собственный интерфейс управления воспроизведением?