ios - 快速更改视频内容

标签 ios swift video uiscrollview

我有一个带有一些 UIImage 的 UIScrollView,我想使用 MPMoviePlayerController 放置两个视频(我知道它已被弃用)但是如果我使用两个以上的视频,第二个会停止播放,因为 Apple DOC说不可能同时启动多个视频。所以我想保留相同的媒体播放器但内容不同。 但是我无法替换内容。

var moviePlayer : MPMoviePlayerController?

   func firstVideo(path:String){

  var audioplayer : MPMoviePlayerController!
        var path = NSBundle.mainBundle().pathForResource("airplane", ofType:"m4v")      
        let url = NSURL.fileURLWithPath(path)        
        self.moviePlayer = MPMoviePlayerController(contentURL: url)
        let player = self.moviePlayer

        if let player = self.moviePlayer {

            player.view.frame = CGRect(x: 0, y: 0, width: 200, height: 200)

            player.view.sizeToFit()
            player.scalingMode = MPMovieScalingMode.Fill
            player.movieSourceType = MPMovieSourceType.File
            player.repeatMode = MPMovieRepeatMode.One

          self.view.addSubview(player.view)

        }
    }

  func scrollViewDidScroll(scrollView: UIScrollView){


        var pageheight = self.scrollView.frame.size.width
        var page = floor((self.scrollView.contentOffset.x - pageheight / 2) / pageheight) + 1;

        self.pageControl.currentPage = Int(page);


        if (page == 1.0){



            if let player = moviePlayer{

                player.play()

            }

            }



        else if (page == 2.0){
            if let player = moviePlayer{

                player.stop()

            }
        }

        if (page == 3.0){
            if let player = moviePlayer{

 var path = NSBundle.mainBundle().pathForResource("another_video", ofType:"m4v")
                firstVideo(path!)

                player.play()           
            }
        }


        else{
            if let player = moviePlayer{

               player.stop()

                // playerTwo.view.removeFromSuperview()
            }

        }
    }

最佳答案

为什么不使用 UITableView 而不是 UIScrollView ?因此,您只能在每个单元格中使用一个包含多个内容的 MPMoviePlayerController 对象。

此外,您为下一个 MPMoviePlayerController 对象获取新的包 URL,并将其发送给您的播放器函数,但您在此函数中再次创建名为“path”的新对象,并且从不使用 path发送的对象。所以你的视频路径总是一样的。试试这个;

if (page == 3.0){

   if let player = moviePlayer{

      let path = NSBundle.mainBundle().pathForResource("another_video", ofType:"m4v")      
      player.contentURL = NSURL.fileURLWithPath(path!) 
      player.play()           
   }
}

关于ios - 快速更改视频内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33522731/

相关文章:

javascript - 提供适合用户连接的视频 Assets ?

ios - 如何更新之前在代码中设置的 NSLayoutConstraint 常量? - swift

ios - 使用 Swift 格式化段落文本

ios - 尝试设置 UIPickerView 的数据源时出错

html - 有没有办法在播放后立即隐藏 HTML5 视频?

ios - 当视频滚动到 View 中时自动播放 MPMoviePlayerController

ios - swift3中针对不同目标设计通用决策文件

ios - 如何在文本字段中仅接受一个小数点值?

ios - JsqMessageViewController View 仅显示单行文本

Swift 代码崩溃且无法正常工作