如何在iOS中播放循环视频?

如何在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

如何将视频剪辑放在情节提要中?我所看到的是:

还有,我应该把.mp4文件放在哪里

最后,当View Controller启动时,循环视频剪辑的正确代码是什么

 //insert looping video clip here

我熟悉Android Studio/java,可以做到这一点,没有问题。然而,我对swift和Xcode非常陌生,所以我遇到了麻烦。

制作循环视频:

  • ui视图
    添加到ViewController中,相应地设置约束

  • 声明
    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
    的全局功能

至于将视频文件保存在何处,请将其保存在主捆绑包中,即:-在您的case Fighting Trainer Pro文件夹中

例如:

切换静音()


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)


           }....
     }