I’ve a VideoViewManager class which is used as a local part in my react native aspect code.
VideoViewManager returns a category of sort UIView, VideoView.swift.
I’m attempting so as to add subview to this VideoView class, which is mainly a video participant that’s being returned from a Video Enhancing Api device
the subview -> (<VEPlaybackSDK.PlayablePreview: 0x7fabcd7467c0; baseClass = UIImageView; body = (0 0; 200 200); userInteractionEnabled = NO; backgroundColor = UIExtendedSRGBColorSpace 0 1 0 1; layer = <AVPlayerLayer: 0x600003048810>>)
despite the fact that the addition of subview is profitable, and the video is taking part in, i can hear the audio of the video, however the precise video participant shouldn’t be seen on display screen.
Why is the video not seen? I can see the view component taking house in my viewport and the background coloration can be altering, however the video i’m attempting to play, the participant shouldn’t be seen
these are my lessons
class PlaybackController: NSObject, RCTBridgeModule {
static func moduleName() -> String {
return "PlaybackController"
}
var playbackManager: PlaybackManager!
let editor = VideoEditorManager()
// Create an occasion of VideoPlayerView
var videoPlayerView: VideoPlayerView!
// Override the designated initializer from NSObject
override init() {
tremendous.init()
editor.editor.getLicenseState(completion: { isValid in
print("license is legitimate right here")
self.playbackManager = PlaybackManager(videoEditorModule: self.editor)
self.playbackManager.addVideoContent(with: self.editor.selectedVideoContent)
DispatchQueue.foremost.async {
self.videoPlayerView = VideoPlayerView()
self.playbackManager.setSurfaceView(with: self.videoPlayerView)
}
})
}
}
class PlaybackManager: VideoEditorPlayerDelegate {
init(videoEditorModule: VideoEditorManager) {
self.videoEditorService = videoEditorModule.editor
self.videoResolutionConfiguration = videoEditorModule.videoResolutionConfiguration
self.playbackSDK = VEPlayback(videoEditorService: videoEditorService)
}
func addVideoContent(with videoUrls: [URL]) {
// func addVideoContent(with videoUrls: URL) {
let videoSequence = createVideoSequence(with: videoUrls)
// let videoSequence = VideoSequence(folderURL: "")
self.videoSequence = videoSequence
// videoSequence.addVideo(at: videoFileURL)
// Create VideoEditorAsset from related sequence
// VideoEditorAsset is entity of VideoEditor used for plaback
let videoEditorAsset = VideoEditorAsset(
sequence: videoSequence,
isGalleryAssets: true,
isSlideShow: false,
videoResolutionConfiguration: videoResolutionConfiguration
)
if videoEditorService != nil {
// let videoPlayerView = VideoPlayerView()
// Set present video asset to video editor service
self.videoEditorService?.setCurrentAsset(videoEditorAsset)
// self.setSurfaceView(with: videoPlayerView)
// Setup preview render measurement
self.setupRenderSize(videoSequence: videoSequence)
}
}
// Gives video participant preview
func setSurfaceView(with playerContainerView: VideoPlayerView!) {
DispatchQueue.foremost.async {
// if VideoPlayer shouldn't be nil
if let playerContainerView = playerContainerView {
print("playerContainerView==",playerContainerView)
let playbackView = self.playbackSDK.getPlayableView(delegate: self)
self.playbackView = playbackView
// if subview of video participant is added already
if self.isVideoAdded {
print("playbackView ALREADY ADDED as a subview to playerContainerView")
} else {
print("playbackView subview not there presently, including")
self.isVideoAdded = true
playerContainerView.body = CGRect(x: 0, y: 0, width: 300, peak: 300)
playbackView.contentMode = .scaleAspectFit // or different appropriate content material mode
playbackView.body = CGRect(x: 0, y: 0, width: 200, peak: 200) // Modify the width and peak as wanted
playbackView.backgroundColor = UIColor.inexperienced
playerContainerView.addSubview(playbackView)
playerContainerView.bringSubviewToFront(playbackView)
playbackView.body = playerContainerView.bounds
// Disable autoresizing masks in order that constraints work
playbackView.translatesAutoresizingMaskIntoConstraints = false
// Add Auto Format constraints to place playbackView
playerContainerView.layoutSubviews()
// Drive structure replace
self.participant?.play(loop: true, fixedSpeed: true)
print("playerContainerView.subviews== (playerContainerView.subviews)")
}
}
}
}
}
@objc(VideoPlayerManager)
class VideoPlayerManager: RCTViewManager {
override func view() -> UIView! {
return VideoPlayer()
}
override static func requiresMainQueueSetup() -> Bool {
return true
}
}
class VideoPlayerView: UIView {
override init(body: CGRect) {
tremendous.init(body: body)
}
override func layoutSubviews() {
tremendous.layoutSubviews()
self.backgroundColor = UIColor.purple
self.subviews.first?.body = self.bounds
}
required init?(coder aDecoder: NSCoder) {
tremendous.init(coder: aDecoder)
}
}