在tvOS的内置应用程序中,当您观看视频时,它会在您向下滑动时显示有关该视频的信息.我找不到任何关于开发人员如何做同样事情的信息.我敢肯定它的设计是可行的,因为它说"向下滑动信息"有没有人想到这一点?我正在使用AVPlayerViewController.谢谢.
在tvOS用户向下滑动遥控器时显示的菜单中,在其他电影应用上显示"字幕,音频和信息",如何使用按钮创建另一个选项卡?
以下是我的代码:
AVMutableMetadataItem *titleMetadataItem = [[AVMutableMetadataItem alloc] init];
titleMetadataItem.locale = NSLocale.currentLocale;
titleMetadataItem.key = AVMetadataCommonKeyTitle;
titleMetadataItem.keySpace = AVMetadataKeySpaceCommon;
titleMetadataItem.value = @"The Title";
NSArray *externalMetadata = [[NSArray alloc] initWithObjects:titleMetadataItem, nil];
_player.player.currentItem.externalMetadata = externalMetadata;
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我如何在向下滑动菜单中创建一个按钮,AVPlayerViewController以便用户可以在关闭或打开字幕之间切换?我没有srt files嵌入视频中.相反,我有一个单独的subtitle parser,我在标签上显示它.我能够获取信息部分以显示文本,但有没有办法添加按钮?
或者我如何为视频添加字幕选项?这不起作用:
_player.requiresFullSubtitles = YES;
谢谢!
我正在使用AVPlayerViewController自定义播放控件实现iOS视频播放器(即showsPlaybackControls属性定义为NO).这似乎在大多数情况下都能正常工作,我看到的唯一问题是我想在播放器中使用自定义活动指示器,但似乎AVPlayerViewController在某些时候缓冲视频时显示默认活动指示器.
有没有办法从中删除此默认活动指示器视图AVPlayerViewController?
图像显示我正在描述的内容,底部的控件是自定义的并覆盖在播放器顶部,但活动指示器不是.
iphone uiactivityindicatorview ios avplayer avplayerviewcontroller
我想知道是否可以检测播放控件何时从 AVPlayerViewController 视图中出现或消失。我正在尝试在我的播放器上添加一个 UI 元素,该元素必须遵循播放控件显示。仅在显示控件时出现,否则消失
我似乎没有找到任何可以在 AVPlayerViewController 上观察到的值来实现这一点,也没有任何回调或委托方法。
我的项目在 Swift 中。
我有一个播放视频的应用程序。这是与iOS 11,12和iOS 13.在iOS上11和12兼容,视频播放可以正常运行的使用无论是预期的AVPlayerViewController,甚至只是AVPlayerLayer。
但是,在 iOS 13 上,我开始收到报告,称很多用户在更新 iOS 时突然无法加载视频(或仅加载音频或仅加载第一帧)。我很难复制它,但有些人提到它主要发生在网络连接不良的情况下,并且使用 Network Link Conditioner 果然我能够复制它。
它特别影响 HLS 视频(例如,Reddit 使用的花哨的直播兼容视频)。它继续与 MP4 一起正常工作。这是一个失败的示例 URL:https : //v.redd.it/gl3chx2kd4v31/HLSPlaylist.m3u8
这是触发它的网络链接调节器配置文件:https : //i.imgur.com/XWsKUeM.jpg
这是触发它的示例项目,同时显示 AVPlayerViewController 和 AVPlayer(点击下载,Google 很奇怪):https : //drive.google.com/file/d/1RS5DvUypdOLFCYJe1Pt2Ig0fQljZDLs2/view
这是使用 AVPlayerViewController 展示它的示例代码:
let assetURL = URL(string: "https://v.redd.it/gl3chx2kd4v31/HLSPlaylist.m3u8")!
// The following MP4 URL *does* work, for instance
// let assetURL = URL(string: "https://giant.gfycat.com/DependentFreshKissingbug.mp4")!
let player = AVPlayer(url: assetURL)
let playerViewController = AVPlayerViewController()
playerViewController.player = player
self.present(playerViewController, animated: true) {
playerViewController.player!.play()
} …Run Code Online (Sandbox Code Playgroud) 我正在使用iOS应用程序.我需要在纵向和横向模式下播放视频.我已经实现了AVPlayerViewController来播放视频.我已经实现了视频完成然后弹出到前一个屏幕.每件事情都很好但是当用户在人像模式下播放视频并点击全屏按钮时,播放器进入全屏模式但视频结束,然后播放器屏幕不弹出,完成按钮不起作用.如何解决这个问题?
我必须在视频顶部绘制标签或按钮relay next previous , leave comment.视频列表有它,一旦用户从表中选择一个项目,它需要播放,一旦播放器播放完成,那些按钮或标签应该出现在视频的顶部
这是我的代码:
comPlayerControl = AVPlayerViewController()
if let player = comPlayerControl {
let videoURL: String = "http://cdnapi.kaltura.com/p/11/sp/11/playManifest/entryId/"+selectedSubmission.transcodeRefId+"/format/applehttp/protocol/http/a.m3u8"
let playerItem = AVPlayerItem(URL: NSURL(string: videoURL)! )
commmentPlayer = AVPlayer(playerItem: playerItem)
player.player = commmentPlayer
player.view.frame = videoCell.frame
player.view.sizeToFit()
player.showsPlaybackControls = true
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(CommentsTableViewController.playerDidFinishPlaying(_:)),
name: AVPlayerItemDidPlayToEndTimeNotification, object: playerItem)
comPlayerControl.delegate = self
videoCell.addSubview(player.view)
}
func playerDidFinishPlaying(note: NSNotification) {
print("Video Finished")
let DynamicView=UIView(frame: CGRectMake(100, 200, 100, 100))
DynamicView.backgroundColor=UIColor.greenColor()
DynamicView.layer.cornerRadius=25
DynamicView.layer.borderWidth=2
DynamicView.layer.zPosition = 1;
comPlayerControl.view.addSubview(DynamicView)
}
Run Code Online (Sandbox Code Playgroud)
像这样的要求
我有这个代码AVPlayerViewController.
UITapGestureRecognizer *tap=[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAvPlayer)];
[self.avPlayerViewController.view addGestureRecognizer:tap];
Run Code Online (Sandbox Code Playgroud)
但这不起作用..:S,我尝试过设置
[self.avPlayerViewController.view setUserInteractionEnabled:YES];
Run Code Online (Sandbox Code Playgroud)
仍然没有好......
唯一可行的解决方案是使用UIGestureRecognizer并实现它的shouldReceiveTouch委托并检查av播放器是否被触摸..但问题是,我们不想捕获"轻敲释放"事件..因为如果av player只是触摸了视图,它立即执行代码,这不是我们想要的......
请帮我们解决这个问题..
谢谢!
iphone objective-c ios uitapgesturerecognizer avplayerviewcontroller
我正在使用AVPlayer从网址播放视频. AVPlayerItemDidPlayToEndTimeNotification未触发.我已经把断点检查了.以下是我的代码片段: -
@IBAction func playButtonClicked(sender: UIButton) {
let url:NSURL = NSURL(string: self.currentSelectedContent.link)!
moviePlayer = AVPlayer(URL: url)
playerViewController = AVPlayerViewController()
playerViewController.player = moviePlayer
self.presentViewController(playerViewController, animated: true) {
NSNotificationCenter.defaultCenter().addObserver(self, selector: "moviePlayBackFinished", name: AVPlayerItemDidPlayToEndTimeNotification, object: self.moviePlayer)
self.playerViewController.player?.play()
}
}
func moviePlayBackFinished() {
self.playerViewController.dismissViewControllerAnimated(true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud) 我有一个用于外部屏幕的 UISceneConfiguration,当外部显示器连接到 iOS 设备时会触发该配置。
// MARK: UISceneSession Lifecycle
@available(iOS 13.0, *)
func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
// Called when a new scene session is being created.
// Use this method to select a configuration to create the new scene with.
switch connectingSceneSession.role {
case .windowApplication:
return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
case .windowExternalDisplay:
return UISceneConfiguration(name: "External Screen", sessionRole: connectingSceneSession.role)
default:
fatalError("Unknown Configuration \(connectingSceneSession.role.rawValue)")
}
}
Run Code Online (Sandbox Code Playgroud)
我在链接到外部显示器的新 UIScene 中以这种方式在外部屏幕中显示自定义视图。但现在的问题是,如果我在应用程序流程中也有一个 AVPlayerViewController,它不再显示(播放)到外部屏幕。我想 AVPlayerViewController 可能会为外部显示播放做它自己的配置,但现在我有一个嵌入在外部屏幕上的自定义视图,它无法覆盖它。我需要做什么才能使 AVPlayerViewController 可以按其方式将内容显示到外部屏幕? …