因此,我搜索了有关此错误的所有帖子,但没有任何效果。发生的情况是,当我第一次打开以下视图控制器时,一切正常。但是当我关闭控制器并尝试第二次播放视频时,我收到此错误。不知道为什么。
NSMutableArray *AVPlayerItems;
AVQueuePlayer *player ;
NSURL *url = [NSURL fileURLWithPath:filePath];
AVPlayerItem *firstItem = [AVPlayerItem playerItemWithURL: url3];
[AVPlaterItems addObject:firstItem];
player = [AVQueuePlayer queuePlayerWithItems:AVPlayerItems];
playerController = [AVPlayerViewController new];
playerController.delegate = self;
[self.viewPlayer addSubview:playerController.view];
playerController.view.frame = self.viewPlayer.frame;
playerController.showsPlaybackControls = NO;
playerController.player = player;
[playerController.player play];
playerController.player.muted = YES;
[self.presentingViewController dismissViewControllerAnimated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud) 我有一个带有视图控制器(称为 A)的导航控制器,其中包含一个表格视图。我点击 tableview 中的一个项目,然后进入一个新的视图控制器,将其称为 B。在 BI 中显示 AVPlayerViewController,当完成查看时,我点击“完成”,它会一直返回到 vc A(而不是 B)。我究竟做错了什么?
我有三个网址,必须检查这些网址是否有视频链接播放.如果它不包含网址中的视频并从下一个网址播放视频,我必须esc链接.以下代码将有助于跟踪播放状态.
let playerAV = AVPlayerViewController()
var player = AVPlayer()
playerAV.player = player
playerAV.view.frame = CGRectMake(0, 0, self.videoView.frame.width, self.videoView.frame.height)
self.addChildViewController(playerAV)
self.videoView.addSubview(playerAV.view)
playerAV.didMoveToParentViewController(self)
playerAV.player?.play()
addObserverOfMoviePlayer()
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(ChannelDetailViewController.notificationObserver(_:)), name:AVPlayerItemDidPlayToEndTimeNotification , object: player.currentItem)
_ = UIDevice.beginGeneratingDeviceOrientationNotifications
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(ChannelDetailViewController.deviceOrientationDidChange(_:)) , name:
UIDeviceOrientationDidChangeNotification, object: nil)
playerAV.player!.addObserver(self, forKeyPath: "rate", options: NSKeyValueObservingOptions.New, context: nil)
playerAV.player!.currentItem!.addObserver(self, forKeyPath: "playbackBufferEmpty", options: NSKeyValueObservingOptions.New, context: nil)
playerAV.player!.currentItem!.addObserver(self, forKeyPath: "playbackLikelyToKeepUp", options: NSKeyValueObservingOptions.New, context: nil)
override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) {
if keyPath == "rate" …Run Code Online (Sandbox Code Playgroud) 我正在尝试更新这个已弃用的方法:“presentMoviePlayerViewControllerAnimated”,但是我无法导入 AVKit 并使用 AVPlayerViewContoller。似乎我的 Xcode 没有以某种方式看到这个框架。
这是我的代码:
比赛详情VC.m
-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath (NSIndexPath *)indexPath {
YoutubeVideoModel* video = [_videos objectAtIndex:indexPath.row];
XCDYouTubeVideoPlayerViewController *videoPlayerViewController = [[XCDYouTubeVideoPlayerViewController alloc] initWithVideoIdentifier:video.videoID];
=>[self presentMoviePlayerViewControllerAnimated:videoPlayerViewController];
Run Code Online (Sandbox Code Playgroud)
无法访问 AVKit 文件: 使用 CM + 单击
MatchDetalisVC.m更新
[self presentViewController:videoPlayerViewController animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)
用这个更改了最后一行。没有错误。看来我也不必在我的 ViewController 中 #import AVKit 。是正确的吗?
我想以编程方式AVPlayerViewController从 iPad 向外部窗口添加视图。问题是添加时,播放器视图显示“此视频正在电视上播放”
示例代码:
let player = AVPlayer(url: someUrl)
//these two properties seem to have no effect
//player.usesExternalPlaybackWhileExternalScreenIsActive = true/false
//player.allowsExternalPlayback = true/false
let viewController = AVPlayerViewController()
viewController.player = player
viewController.view.frame = frame
externalWindow.addSubview(viewController.view)
player.play()
Run Code Online (Sandbox Code Playgroud)
有没有办法将视频视图自己添加到外部窗口,以便我可以决定大小?
我使用Av播放器视图控制器创建了一个启动视频.它适用于所有设备,除了我的手机X.我尝试改变视频重力框架和一切,但它不会工作.关于这个的任何想法?这是示例代码:
guard let videoPath = Bundle.main.path(forResource: "Redtaxi-splash", ofType:"mov") else {
return
}
let videoURL = URL(fileURLWithPath: videoPath)
let player = AVPlayer(url: videoURL)
playerViewController = AVPlayerViewController()
playerViewController?.player = player
playerViewController?.showsPlaybackControls = false
playerViewController?.view.frame = view.frame
playerViewController?.view.backgroundColor = .white
playerViewController?.view.contentMode = .scaleAspectFill
NotificationCenter.default.addObserver(self, selector: #selector(playerDidFinishPlaying(note:)),
name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: player.currentItem)
view.addSubview((playerViewController?.view)!)
playerViewController?.player?.play()
Run Code Online (Sandbox Code Playgroud) 因此,我创建了一个名为“VideoElement”的视图,当父视图加载时,它将在后台播放视频。效果很好。但是,我不知道如何实现暂停/恢复系统。我想更改一个变量(var“paused”),该变量在 true 时暂停视频,在 false 时恢复播放。这有点管用。具体来说,当“暂停”为真时,视频暂停。但是,当它变为 false 时,视频不会恢复播放。
也许它可能与“updateUIViewController”有关?另外,我不知道为什么“暂停”必须是绑定变量而不是状态变量(@State 不起作用)。任何帮助将不胜感激。谢谢!
import SwiftUI
import AVKit
struct VideoElement: View {
var fileName: String
@Binding var paused: Bool //this controls playback
var body: some View {
let player = AVPlayer(url: URL(fileURLWithPath: Bundle.main.path(forAuxiliaryExecutable: fileName)!))
AVPlayerControllerRepresented(player: player)
.onAppear {
player.play()
}
.onChange(of: paused, perform: { paused in
if paused {
player.pause()
}
else {
player.play() //should play the video, does not
print("resume") //this runs, so above should've run also
}
})
}
}
}
struct AVPlayerControllerRepresented …Run Code Online (Sandbox Code Playgroud) ios avplayer avplayerviewcontroller swiftui uiviewrepresentable
我正在尝试在TVOS的Swift上使用playerViewController循环播放视频。我的视频播放正常,但是我想循环播放视频。到目前为止,这是我的代码:
override func viewDidAppear(_ animated: Bool) {
let videoURL = URL(string: "https://url-to-video.com/video.mp4")
let player = AVPlayer(url: videoURL!)
let playerViewController = AVPlayerViewController()
playerViewController.player = player self.present(playerViewController, animated: true) {
playerViewController.player!.play()
}
}
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏。谢谢