好的,所以我想在我的应用程序中播放电影预告片.用户将按下按钮,然后播放视频.我已将import AVKit和import AVFoundation行添加到我的文件中.这是我到目前为止制作视频的代码:
@IBAction func playTrailerPressed(sender: AnyObject) {
let videoURL = NSURL(string: "https://youtu.be/d88APYIGkjk")
let player = AVPlayer(URL: videoURL!)
let playerViewController = AVPlayerViewController()
playerViewController.player = player
self.presentViewController(playerViewController, animated: true) {
playerViewController.player!.play()
}
}
Run Code Online (Sandbox Code Playgroud)
这似乎是推出一个AVPlayerViewController,但不播放来自YouTube的视频.相反,我得到以下内容:
我尝试过来自YouTube的共享和嵌入链接,但都没有工作.如果我使用最后有视频文件名的链接,它可以正常播放,例如:"https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4"- 所以我知道代码有效.
有没有人知道这是否有可能以这种方式使用YouTube视频?(我也试过IMDb和Apple的预告片,但它是一样的).
谢谢你的帮助!
我正在使用AVPlayer播放视频.我无法播放.mp4视频.我得到了这个黑屏.这是我的代码.
`NSString *filePath = [self.videoArray objectAtIndex:index];
NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:filePath ofType: @"mp4];
url = [[NSURL alloc] initFileURLWithPath: soundFilePath];
playerViewController = [[AVPlayerViewController alloc] init];
playerViewController.videoGravity = AVLayerVideoGravityResize;
playerViewController.view.frame = self.view.bounds;
playerViewController.showsPlaybackControls = NO;
video=[AVPlayer playerWithURL:url];
playerViewController.player = _video;
playerViewController.view.userInteractionEnabled = false;
[video play];
[self.view addSubview:playerViewController.view];`
Run Code Online (Sandbox Code Playgroud) 我已经以编程方式添加了AVPlayerViewController一个UIViewController.我可以在玩家完成游戏时收到通知(playerDidFinishPlaying).我还想知道用户是否在播放视频时触摸了屏幕,但我没有找到任何相关的通知.
目前,我们使用标准的AVPlayerviaAVPlayerViewController来播放视频。我们正在以https://ourdomain/media/mediaid?jwt=authTokenHere格式从 url 流式传输视频。如您所见,该 url 没有扩展名;但是,在有效负载上设置了标头以指示响应是视频。
虽然链接导致视频在桌面 Safari 和 Chrome 中播放良好,但它不会AVPlayer在我们的应用程序中通过 iOS 播放。是否有一些特定的格式AVPlayer?
使用 时AVPlayerViewController,用户可以选择字幕是使用特定语言off,还是设置为auto。设置requiresFullSubtitles属性我可以强制显示字幕,但这不是我想要的。
有没有办法检测用户为字幕设置选择了什么,是选择了语言off,还是auto?
我有一个用 AVPlayerViewController 包装的 AVPlayer。我的整个应用程序处于纵向模式,AVPlayer 是其中一个视图的子视图。我想在设备像 YouTube 应用程序一样旋转时自动全屏显示视频。有没有办法以编程方式调用 AVPlayerViewController 的全屏按钮方法。在文档中没有找到任何内容。
在 tvOS 上,是否可以将自定义项目添加到AVPlayerViewController信息/字幕/音频菜单中?不仅仅是添加元数据项,而是一个全新的部分。我想在字幕之后提供一个额外的菜单项,用于选择播放速度,并可选择 1.0x、2.0x 等选项。
如果这不可能,那么是否可以像 iOS 上那样AVPlayerViewController使用嵌入的自定义视图?AVPlayer
需要一些建议。提前致谢。下面是我的代码:
let playerAV = AVPlayerViewController()
var player = AVPlayer()
player = AVPlayer(URL: url)
print(url)
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()
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)
player.addObserver(self, forKeyPath: "rate", options: NSKeyValueObservingOptions.New, context: nil)
player.addPeriodicTimeObserverForInterval(CMTime(value: 1, timescale: 3), queue: dispatch_get_main_queue()) { [weak self] time in
self?.handlePlayerStatus(time)
}
func handlePlayerStatus(time: CMTime) {
if player.status == .ReadyToPlay { …Run Code Online (Sandbox Code Playgroud) 我尝试在AVPlayerLayer中显示本地录制的视频,该视频有时可以工作。我可以听到录制视频中的音频,但看不到视频。有时视频和音频都可以工作,有时只有音频。
我已经尝试过使用AVPlayerLayer和AVPlayerViewController,但这两种情况都会出现相同的问题。所以这不是因为框架错误。
示例代码AVPlayerViewController:
let player = AVPlayer(url: url)
let playerController = AVPlayerViewController()
playerController.player = player
self.present(playerController, animated: true) {
player.play()
}
Run Code Online (Sandbox Code Playgroud)
示例代码AVPlayerLayer:
let asset = AVAsset(url: url)
let item = AVPlayerItem(asset: asset)
self.player = AVPlayer(playerItem: item)
self.player?.addObserver(self, forKeyPath: "status", options: NSKeyValueObservingOptions(), context: nil)
self.playerLayer = AVPlayerLayer(player: self.player!)
self.playerLayer?.frame = imageView.bounds
imageView.layer.addSublayer(self.playerLayer!)
Run Code Online (Sandbox Code Playgroud)
编辑1:
观察播放器状态时,错误为nil,状态为readyToPlay
编辑2:
如果 URL 是远程的,则工作正常。
编辑3:
如果我在视频完成导出后等待几秒钟,似乎可以工作。是否是文件未 100% 写入文件系统的原因? …
我在我的应用程序中使用 AVPictureInPictureController 及其委托方法来使用画中画功能。我按照APPLE文档来实现这个功能。我很高兴它运行良好。
但现在我想限制用户在某些错误情况下播放/暂停内容。我尝试在 PIP 模式(画中画模式)下隐藏控件,但失败了。
有什么可能的方法来限制用户的操作吗?
或者任何其他方法可以解决我的问题?
ios ×8
avplayer ×6
swift ×5
tvos ×2
video ×2
avfoundation ×1
avkit ×1
fullscreen ×1
ipad ×1
mime-types ×1
objective-c ×1
youtube ×1