【问题标题】:What is the best way to play video in UITableViewCell在 UITableViewCell 中播放视频的最佳方式是什么
【发布时间】:2015-04-22 05:11:07
【问题描述】:

我正在尝试根据单元格位置在 UITableViewCell 中制作自动播放视频。

我正在使用 AVPlayer

这是我的代码:

    __weak typeof(self)this = self;

    NSString* videoPath = @"http://test.com/test.mp4";
    AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:[NSURL URLWithString:videoPath] options:nil];
    NSArray* keys = [NSArray arrayWithObjects:@"playable",nil];

    [asset loadValuesAsynchronouslyForKeys:keys completionHandler:^(){
        AVPlayerItem* playerItem = [AVPlayerItem playerItemWithAsset:asset];
        this.avPlayer = [AVPlayer playerWithPlayerItem:playerItem];
        this.avPlayerLayer = [AVPlayerLayer playerLayerWithPlayer:this.avPlayer];
        this.avPlayerLayer.frame = _videoContent.frame;

        dispatch_async(dispatch_get_main_queue(),^{
            [this.videoContent.layer addSublayer:this.avPlayerLayer];
            [this.avPlayer play];
        });
    }];

但是当我滚动表格时,我的 UITableView 被冻结了。 我认为有很多耗时的工作,但最重要的是

[this.avPlayer play]

所以我的问题是 AVPlayer 在这种情况下是最好的方法吗? 有什么方法可以提高性能吗?

【问题讨论】:

  • 您可以使用 MPMoviePlayerController 代替 AVPlayer。您可以参考here,了解更多关于如何在单元格中使用它的详细信息。
  • @RajatDeepSingh 我试过了,但我认为 MPMoviePlayerController 并不比 AVPlayer 快。谢谢:)

标签: ios video avplayer


【解决方案1】:

您确定创建AVPlayerItemAVPlayerAVPlayerLayer 都可以在主线程之外执行吗?您可能想尝试将它们放在主队列上调度的块中。

【讨论】:

  • 我已经尝试过了,因为我不确定它是否需要在主线程中运行。但它是一样的。谢谢:)
【解决方案2】:

使用下面的链接,这适合您的问题。

https://github.com/PRX/PRXPlayer

【讨论】:

    猜你喜欢
    • 2019-05-19
    • 1970-01-01
    • 2011-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多