我希望在像Instagram这样的UITableView中显示视频,这些视频将在单元格可见时自动播放,并在单元格从屏幕消失时暂停。我到处尝试找到解决方案,但我发现的是非常复杂的代码甚至无法理解。此时屏幕上显示两个单元格。只播放一个视频,其他所有视频都应停止播放。
我还需要关心内存泄漏。所以我不知道在哪里可以分配AVPlayerViewController。我处理一系列URL来播放视频。
请详细给我完美的解决方案。帮助将不胜感激。
编辑:
此方法提供显示在屏幕上的索引数组
-(BOOL)isRowVisible :(NSIndexPath*)indexPath {
NSArray *indexes = [tblHome indexPathsForVisibleRows];
for (NSIndexPath *index in indexes) {
if (index.row == indexPath.row) {
return YES;
}
}
return NO;
}
在cellForRowAtIndexpath方法中 -
BOOL visibleCell = [self isRowVisible:indexPath];
if(visibleCell == YES)
{
//if(!avpController)
{
avpController = nil;
avpController= [[AVPlayerViewController alloc] init];
avpController.player=videoPlayer;
// avpController.view.frame = CGRectMake(0, 50, SCREEN_WIDTH, 100); //CGRectMake(0, userDetailView.frame.origin.y + userDetailView.frame.size.height +5, SCREEN_WIDTH, 200) ;
avpController.view.frame = videoView.bounds;
[videoView addSubview:avpController.view];
}
NSURL *url= [NSURL URLWithString:[arrVideo valueForKey:@"video_path"]];
videoPlayer = [AVPlayer playerWithURL:url];
[videoPlayer addObserver:self forKeyPath:@"status" options:0 context:nil];
[videoPlayer play];
}
答案 0 :(得分:0)
首先,您需要一个基于UITableViewCell的自定义单元格。在其中你应该有一个方法,在调用时创建一个AVPlayer(也是一个类属性),例如:
- (void) createPlayerWithURL:(NSURL)url {
AVAsset *asset = [AVAsset assetWithURL:url];
self.playerItem = [AVPlayerItem playerItemWithAsset:asset];
self.player = [[AVPlayer alloc] initWithPlayerItem:self.playerItem];
self.playerLayer = [AVPlayerLayer playerLayerWithPlayer:self.player];
[self.playerLayer setFrame:self.view.layer.bounds];
[self.view.layer addSublayer:self.playerLayer];
[self.player play];
}
在自定义单元格标题文件中添加指向该方法的链接,然后从cellForRowAtIndexPath
调用它,并传入视频的网址。
您可以使用另一种方法检查单元格何时退出视图:tableView:didEndDisplayingCell:forRowAtIndexPath:
。在tableview上使用该方法来获取单元格对象 - 您只需调用即可停止播放器,即[cell.player pause];
答案 1 :(得分:0)
您应该使用# install.packages("devtools")
devtools::install_github("smac-group/gmwm")
# Set seed for reproducibility
set.seed(13412)
# Specify a SARIMA(2,1,1)(1,1,1)[12]
mod = SARIMA(ar=c(.3,.5), i=1, ma=.1, sar=.2, si = 1, sma = .4, s = 12, sigma2 = 1.5)
# Generate the data
xt2 = gen.gts(mod, 1e3)
# Validate output
arima(xt2, order=c(2,1,1), seasonal=list(order=c(1,1,1), period = 12))
(或与Call:
arima(x = xt2, order = c(2, 1, 1), seasonal = list(order = c(1, 1, 1), period = 12))
Coefficients:
ar1 ar2 ma1 sar1 sma1
0.3491 0.4796 0.0903 0.2106 0.4165
s.e. 0.0737 0.0563 0.0856 0.0551 0.0511
sigma^2 estimated as 1.555: log likelihood = -1621.37, aic = 3254.75
相关联的其他委托方法)来跟踪- (void)scrollViewDidScroll:(UIScrollView *)scrollView
的移动。然后,您应该能够判断scrollview
何时移出屏幕。