シンプルなAVPlayerを作成しました。 (正しく作成しなかった場合は、修正してください... ????)VStackでSwift uiを使用して表示したいのですが、立ち往生...
少なくともライブラリにAVPlayerビューコンポーネントがあった場合、それは簡単だったでしょうが、ライブラリでそれを見つけられませんでした... ????
これがContentView.Swift
内の私のコードです。
//
// ContentView.Swift
// test
//
// Created by Francis Dolbec on 2019-06-26.
// Copyright © 2019 Francis Dolbec. All rights reserved.
//
import SwiftUI
import AVKit
import AVFoundation
// MARK: variables
var hauteurMenuBar = NSApplication.shared.mainMenu?.menuBarHeight
var urlVideo = URL(string: "/Users/francisdolbec/Movies/Séries Télé/Rick et Morty/Rick.and.Morty.S01E01.VFQ.HDTV.1080p.x264-Kamek.mp4")
let player = AVPlayer(url: urlVideo!)
struct ContentView : View {
var body: some View {
VStack {
Text("Hello World")
.frame(maxWidth: .infinity, maxHeight: .infinity)
Text("PATATE!")
//player.play()
}
.frame(minWidth: 1024, idealWidth: 1440, maxWidth: .infinity, minHeight: (640-hauteurMenuBar!), idealHeight: (900-hauteurMenuBar!), maxHeight: .infinity)
}
}
#if DEBUG
struct ContentView_Previews : PreviewProvider {
static var previews: some View {
ContentView()
}
}
#endif
ちなみに、Swift uiを使用してビデオプレーヤーを作成する方法を示すチュートリアルがあれば、本当に感謝しています!
[〜#〜] edit [〜#〜]macOSアプリを開発していることを忘れていました。
チュートリアルへの迅速な回答や同類に感謝します!
これはNSViewに変換されたコードで、macOSアプリで機能します...
Struct PlayerView
は次のとおりです。
_struct PlayerView: NSViewRepresentable {
func updateNSView(_ nsView: NSView, context: NSViewRepresentableContext<PlayerView>) {
}
func makeNSView(context: Context) -> NSView {
return PlayerNSView(frame: .zero)
}
}
_
これがクラスで、ボグダンが言ったような「肉」です。
_class PlayerNSView: NSView{
private let playerLayer = AVPlayerLayer()
override init(frame:CGRect){
super.init(frame: frame)
let urlVideo = URL(string: "https://bitdash-a.akamaihd.net/content/sintel/hls/playlist.m3u8")!
let player = AVPlayer(url: urlVideo)
player.play()
playerLayer.player = player
if layer == nil{
layer = CALayer()
}
layer?.addSublayer(playerLayer)
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func layout() {
super.layout()
playerLayer.frame = bounds
}
}
_
最後に、PlayerView()
を使用して、AVPlayerを_struct ContentView
_に追加できます。