gpt4 book ai didi

ios - iOS中UICollectionView如何流畅播放多个视频?

转载 作者:可可西里 更新时间:2023-11-01 06:14:14 25 4
gpt4 key购买 nike

我想在我的收藏 View 中无限循环播放多个视频。

每个视频代表一个单元格。

我正在使用 ALAsset。

我正在使用 AVPLayer 播放此视频,但加载和播放不流畅。任何建议。

    - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cellIdentifier" forIndexPath:indexPath];
CGRect attachmentFrame = CGRectMake(2, 2, cell.frame.size.width-4, cell.frame.size.height-4);
ALAsset *asset = self.assets[indexPath.row];
UIView* subView;
if ([[asset valueForProperty:ALAssetPropertyType] isEqualToString:ALAssetTypeVideo]) {
// asset is a video
avPlayer = [[AVPlayer alloc] initWithURL:[[asset defaultRepresentation] url]];
avPlayer.muted = YES;
avPlayerLayer =[AVPlayerLayer playerLayerWithPlayer:avPlayer];
[avPlayerLayer setFrame:CGRectMake(0, 0, cell.frame.size.width-4, cell.frame.size.height-4)];
subView = [[UIView alloc]initWithFrame:attachmentFrame];
[subView.layer addSublayer:avPlayerLayer];
[[cell.contentView subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];
[cell.contentView addSubview:subView];

[avPlayer seekToTime:kCMTimeZero];
avPlayerLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;
[avPlayer play];

avPlayer.actionAtItemEnd = AVPlayerActionAtItemEndNone;

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playerItemDidReachEnd:) name:AVPlayerItemDidPlayToEndTimeNotification object:[avPlayer currentItem]];
}


}


- (void)playerItemDidReachEnd:(NSNotification *)notification {
AVPlayerItem *p = [notification object];
[p seekToTime:kCMTimeZero];
}

我也试过 MPMoviePlayerController 但是使用电影播放器​​你只能循环播放一个视频。与缓冲视频或缩略图图像相关的任何其他建议。我不想在视频中播放声音。

最佳答案

AVPlayer 能够在应用程序中非常流畅地播放多个视频,但您需要管理 Collection View 的单元格,因为在您的代码中,当您的单元格重新加载时,您的新AVPlayer 对象为产生问题的同一视频创建。

所以你需要实现这样一种机制,通过它可以实现为一个视频创建单个 AVPlayer 对象。一个建议是管理 AVPlayer 对象的池。

谢谢

关于ios - iOS中UICollectionView如何流畅播放多个视频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31333375/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com