标签: avplayerviewcontroller

如果使用AVPlayerViewController播放视频,如何使用srt文件显示字幕?

我使用AVPlayerViewControllerAVKit框架,直接在横向模式下播放视频。我想知道如何显示字幕。我进行了搜索,但没有找到任何解决方案。我曾经MPMoviePlayerViewController用来播放视频,但是由于它在IOS 9和更高版本中已贬值,因此我正在使用来实现相同的功能AVKit

    NSURL *videoURL = [NSURL URLWithString:video.videoLink];
    AVPlayer *newPlayer = [AVPlayer playerWithURL:videoURL];
    AVPlayerViewController *playerViewController = [AVPlayerViewController  new];
    playerViewController.player = newPlayer;

    int32_t timeScale = newPlayer.currentItem.asset.duration.timescale;
    CMTime seektime=CMTimeMakeWithSeconds(startPlayBackTime, timeScale);

    [playerViewController.player seekToTime:seektime toleranceBefore:kCMTimeZero toleranceAfter:kCMTimeZero];

     }


    [playerViewController.player play];
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(playerItemDidReachEnd:)
                                                 name:AVPlayerItemDidPlayToEndTimeNotification
                                               object:[newPlayer currentItem]];

    playerViewController.player.closedCaptionDisplayEnabled = YES;
    [self presentViewController:playerViewController animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)

它工作正常,但问题是我无法显示字幕。我发现很少有字幕示例,但所有示例都AVPlayer用作子视图,因此这些方法对我不起作用。

知道如何实现吗?

谢谢 !!

avfoundation ios avkit avplayerviewcontroller

5
推荐指数
0
解决办法
777
查看次数

UITableViewCell中的AVPlayer.play()会暂时阻止UI

我正在尝试将内联视频添加到我的UITableViewCells,包括Instagram,Twitter,Vine ......等.我正在使用AVPlayerController和自定义单元格测试带有本地视频文件的UI(请参阅下面的示例代码).我等待AVPlayer的状态为ReadyToPlay,然后播放视频.

问题是当在tableView上滚动时,只要加载视频单元,UI就会冻结一小部分,这使得应用看起来很笨重.当一行中有多个视频单元时,这种效果会变得更糟.任何想法和帮助将不胜感激

TableView代码:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

     let cell = tableView.dequeueReusableCellWithIdentifier("videoCell", forIndexPath: indexPath) as! CustomCell

     //Set up video player if cell doesn't already have one
     if(cell.videoPlayerController == nil){
         cell.videoPlayerController = AVPlayerViewController()
         cell.videoPlayerController.view.frame.size.width = cell.mediaView.frame.width
         cell.videoPlayerController.view.frame.size.height = cell.mediaView.frame.height 
         cell.videoPlayerController.view.center = cell.mediaView.center
         cell.mediaView.addSubview(cell.videoPlayerController.view) 
     }

     //Remove old observers on cell.videoPlayer if they exist
     if(cell.videoObserverSet){
         cell.videoPlayer.removeObserver(cell, forKeyPath: "status")
     }


     let localVideoUrl: NSURL = NSBundle.mainBundle().URLForResource("videoTest", withExtension: "m4v")!
     cell.videoPlayer = AVPlayer(URL:localVideoUrl)
     cell.videoPlayer.addObserver(cell, forKeyPath:"status", options:NSKeyValueObservingOptions.New, context = nil)
     cell.videoObserverSet = true …
Run Code Online (Sandbox Code Playgroud)

objective-c uitableview avplayer swift avplayerviewcontroller

5
推荐指数
1
解决办法
3236
查看次数

如何在ios中将AVPlayer缓冲区设置为空

我在我的应用程序中使用AVPlayer播放视频.

在我的应用程序中,我添加了播放下一个/上一个视频的功能,所以如何设置空缓冲区.

所以,如果有人有解决方案可以帮助我.

objective-c ios avplayer avplayeritem avplayerviewcontroller

5
推荐指数
1
解决办法
1151
查看次数

StatusBar不遵守应用程序的方向并旋转

我有一个根视图控制器来管理其中的所有其他控制器,因此我在上述rootViewController中覆盖了shouldAutorotate和supportedInterfaceOrientations,如下所示:

public override func shouldAutorotate() -> Bool {
    if let vc = view.window?.rootViewController?.presentedViewController {
        if NSStringFromClass(vc.classForCoder) == "AVFullScreenViewController" {
            return true
        }
    }
    return false
}

public override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
    if let vc = view.window?.rootViewController?.presentedViewController {
        if NSStringFromClass(vc.classForCoder) == "AVFullScreenViewController" {
            return UIInterfaceOrientationMask.AllButUpsideDown
        }
    }
    return UIInterfaceOrientationMask.Portrait
}
Run Code Online (Sandbox Code Playgroud)

除了使用AVPlayerViewController查看全屏视频时,我的应用程序仅是纵向模式。

上面的代码在整个应用程序中运行良好。我所有的控制器及其视图均保持竖向显示,当用户全屏观看视频时,它会毫无问题地旋转为横向。

我的问题是,纵向模式下的状态栏未粘附在方向蒙版上并旋转为横向,但是状态栏随后隐藏在横向中。另一个奇怪的事情是,当应用程序处于横向模式时,现在可以将控制中心和通知中心滑动为打开状态,就像应用程序处于横向模式一样。

支持的最低iOS版本为9.0。有什么建议么?

rotation ios swift avplayerviewcontroller

5
推荐指数
1
解决办法
777
查看次数

嵌入式AVPlayerControllerView添加了AVTouchIgnoringView阻止默认播放器的界面

更新:该问题与AVPlayerControllerView无关,请参阅下面的答案.班级的名字AVTouchIgnoringView在一开始就让我困惑,但这也是思考问题的错误途径.

===

众所周知,Media Player在iOS 9中不推荐使用框架,因此我决定尝试AVKit在我的新项目中使用.我的任务是显示嵌入在集合视图'header(UICollectionReusableView)中的视频播放器,下面有一些任意单元格.

这是我在代码中这样做的方式:

override func viewDidLoad() {
  super.viewDidLoad()

  apiManager.loadVideo() { video in
    let player = AVPlayer(URL: video.url)
    self.playerViewController.view.hidden = true
    self.playerViewController.player = player
    self.addChildViewController(self.playerViewController)

    headerView.videoContainerView.addSubview(self.playerViewController.view)
    Cartography.layout(self.playerViewController.view,
      headerView.videoContainerView) { (v1, v2) in
        v1.leading == v2.leading
        v1.bottom == v2.bottom
        v1.trailing == v2.trailing
        v1.top == v2.top
    }

    self.playerViewController.didMoveToParentViewController(self)
    self.playerViewController.addObserver(self,
      forKeyPath: KeyPath.ReadyForDisplay, options: nil, context: nil)
  }
}

override func observeValueForKeyPath(keyPath: String,
  ofObject object: AnyObject, change: [NSObject : AnyObject],
  context: UnsafeMutablePointer<Void>) {
    if …
Run Code Online (Sandbox Code Playgroud)

ios avkit avplayerviewcontroller

4
推荐指数
1
解决办法
754
查看次数

将AVPlayerViewController背景更改为专辑图片objective-c iOS

播放音频时是否可以更改AVPlayerViewController实例的背景?

当我锁定我的设备时,我可以看到正确显示专辑图片的音乐控件,但是当我的应用程序中显示AVPlayerViewController时,我只能看到具有代表当前正在播放的QuickTime的背景的控件.

以下是我的称呼方式:

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];


        NSURL *url=[NSURL fileURLWithPath:clickedPath];
        AVPlayer *player = [AVPlayer playerWithURL:url];


        AVPlayerViewController *controller = [[AVPlayerViewController alloc] init];
        [self presentViewController:controller animated:YES completion:nil];
        controller.player = player;
        [player play];
Run Code Online (Sandbox Code Playgroud)

objective-c ios avplayer avplayerviewcontroller

4
推荐指数
1
解决办法
1467
查看次数

AVPlayer 视图控制器自动旋转关闭?

我正在开发一个仅在纵向模式下的 iOS 应用程序,并且运行良好。

问题是我在 navigationController 之上呈现AVPlayerViewController(两者都是以编程方式创建的)。该播放器支持所有轮换(我不知道为什么!)。

我想将其修复为纵向模式,就像应用程序的其他部分一样。

我们怎样才能做到这一点?

autorotate ios swift avplayerviewcontroller

4
推荐指数
1
解决办法
1475
查看次数

如何替换AVPlayer缩略图?

有没有办法替换AVPlayer缩略图?我需要添加自定义图像作为缩略图层

objective-c video-thumbnails avplayerviewcontroller

4
推荐指数
1
解决办法
3772
查看次数

从 AVPlayerViewController 中删除 QuickTime 图标

我正在构建一个屏幕,用户可以在其中使用 AVPlayerViewController 播放音频文件。问题是我无法去掉播放器视图中的 QuickTime 徽标,请参见屏幕截图:

在此输入图像描述

我的代码:

do {
    try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
    try AVAudioSession.sharedInstance().setActive(true)
    guard let url = URL(string: filePath!) else {
        return
    }

    let player = AVPlayer(url: url)
    let controller = AVPlayerViewController()
    controller.modalPresentationStyle = .overFullScreen
    controller.player = player

    self.present(controller, animated: true) {
        player.play()
    }
} catch {
}
Run Code Online (Sandbox Code Playgroud)

我尝试使用 添加 UIImageView controller.contentOverlayView?.addSubView(),但无法正确居中。如何自定义播放器的布局,而无需从头开始构建自己的界面?

ios avplayer swift avplayerviewcontroller

4
推荐指数
1
解决办法
1195
查看次数

检测 AVPlayerViewController 何时关闭

从表视图单元格中,我播放来自 url 的视频:

        let player = AVPlayer(url: URL(string: "https://bitdash-a.akamaihd.net/content/MI201109210084_1/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8")!)
        player.automaticallyWaitsToMinimizeStalling = false

        let vc = AVPlayerViewController()
        vc.player = player

        // Loop video
        NotificationCenter.default.addObserver(forName: .AVPlayerItemDidPlayToEndTime, object: player.currentItem, queue: .main) { [weak self] _ in
            player.seek(to: CMTime.zero)
            player.play()
        }

        self.parentViewController.present(vc, animated: true, completion: {
            if #available(iOS 10.0, *) {
                vc.player?.playImmediately(atRate: 1.0)
            } else {
                vc.player?.play()
            }
        })
Run Code Online (Sandbox Code Playgroud)

如何检测何时AVPlayerViewController关闭/解除?我想在关门的时候做点什么。

ios avplayer swift avplayerviewcontroller

4
推荐指数
1
解决办法
1193
查看次数