如何在iOS中播放循环视频?
如何将视频剪辑放在情节提要中?我所看到的是: 还有,我应该把.mp4文件放在哪里 最后,当View Controller启动时,循环视频剪辑的正确代码是什么如何在iOS中播放循环视频?,ios,swift,video,avplayer,Ios,Swift,Video,Avplayer,如何将视频剪辑放在情节提要中?我所看到的是: 还有,我应该把.mp4文件放在哪里 最后,当View Controller启动时,循环视频剪辑的正确代码是什么 //insert looping video clip here 我熟悉Android Studio/java,可以做到这一点,没有问题。然而,我对swift和Xcode非常陌生,所以我遇到了麻烦。制作循环视频: 将ui视图添加到ViewController中,相应地设置约束 声明UIView在您的一致性类中为@IBOutlet
//insert looping video clip here
我熟悉Android Studio/java,可以做到这一点,没有问题。然而,我对swift和Xcode非常陌生,所以我遇到了麻烦。制作循环视频:
- 将
添加到ViewController中,相应地设置约束ui视图
- 声明
在您的一致性类中为UIView
@IBOutlet
@IBOutlet weak var videoView : VideoPlay! //Where VideoPlay is a CustomClass for the Video player
- 为视频播放器创建自定义类
:UIVew
VideoPlay
- 修改符合情节提要的ViewController:-
class ViewController: UIViewController { @IBOutlet weak var videoView : VideoPlay! override func viewDidLoad() { super.viewDidLoad() let bundle: NSBundle = NSBundle.mainBundle() let moviePath: String = bundle.pathForResource("yourVideoFile_Name", ofType: "yourVideoFile_Type")! let movieUrl : NSURL = NSURL.fileURLWithPath(moviePath) videoView.playVideoWithURL(movieUrl) }.... }
- 由于
符合类videoView
,因此您可以访问VideoPlay
的全局功能VideoPlay
切换静音()
ismute()
德拉维甸答案的客观C版本。还包含关键的layoutSubviews
方法,以便视频层实际上保持与视图相同的大小
#导入“LBVideoView.h”
#进口
@接口LBVideoView()
{
AVPlayer*\u播放器;
AVPlayerLayer*u playerLayer;
}
@结束
@视频视图的实现
-(instancetype)initWithFrame:(CGRect)frame
{
返回[[super initWithFrame:frame]commonInit];
}
-(instancetype)initWithCoder:(NSCoder*)aDecoder
{
返回[[super initWithCoder:aDecoder]commonInit];
}
-(instancetype)commonInit
{
_playerLayer=[AVPlayerLayer new];
_playerLayer.backgroundColor=UIColor.clearColor.CGColor;
_playerLayer.videoGravity=AVLayerVideoGravityResizeAspect;
[self.layer addSublayer:_playerLayer];
_playerLayer.frame=self.bounds;
回归自我;
}
-(无效)解除锁定
{
[[NSNotificationCenter defaultCenter]移除观察者:self];
}
-(无效)playVideoWithURL:(NSURL*)url
{
_player=[AVPlayer playerWithURL:url];
_playerLayer.player=\u player;
[玩家玩];
[自循环视频];
}
-(无效)循环视频
{
[[NSNotificationCenter defaultCenter]添加观察者:自选择器:@selector(movieEnded)名称:AVPlayerItemDidPlayToEndTimeNotification对象:nil];
}
-(无效)电影结束
{
[_playerseektotime:kCMTimeZero];
[玩家玩];
}
-(无效)布局子视图
{
[超级布局子视图];
_playerLayer.frame=self.bounds;
}
@结束
我需要将mp4文件放在任何地方吗?还有,我需要把任何东西拖到我的故事板上吗?只是一个循环视频剪辑,我不知道循环背景视频/和循环视频之间有什么区别。绝对没有区别,但可以在视频播放器上添加其他子视图,仅此而已……我已经更新了我的答案:)在类函数viewDidLoad()中符合情节提要viewController的viewController类的
。我在回答中提到了这一点……苹果在2016年WWDC会议期间提供了一些示例代码(AVPlayerLooper),名为AVFoundation Playback的进展。他们讨论了使用AVQueuePlayer
幻灯片59:示例代码循环视频的最佳方式:
class ViewController: UIViewController {
@IBOutlet weak var videoView : VideoPlay!
override func viewDidLoad() {
super.viewDidLoad()
let bundle: NSBundle = NSBundle.mainBundle()
let moviePath: String = bundle.pathForResource("yourVideoFile_Name", ofType: "yourVideoFile_Type")!
let movieUrl : NSURL = NSURL.fileURLWithPath(moviePath)
videoView.playVideoWithURL(movieUrl)
}....
}