video怎么打開,GPUImageMovie播放控制

 2023-11-30 阅读 24 评论 0

摘要:記錄一下: Initial method to setup GPUImageMovie, - (void)setupVideo {playerItem = [[AVPlayerItem alloc]initWithURL:self.recordSession.outputUrl];player = [AVPlayer playerWithPlayerItem:playerItem];movieFile = [[GPUImageMovie alloc] ini

記錄一下:

Initial method to setup GPUImageMovie,

- (void)setupVideo
{playerItem = [[AVPlayerItem alloc]initWithURL:self.recordSession.outputUrl];player = [AVPlayer playerWithPlayerItem:playerItem];movieFile = [[GPUImageMovie alloc] initWithPlayerItem:playerItem];movieFile.runBenchmark = YES;movieFile.playAtActualSpeed = YES;[self.view sendSubviewToBack:self.videoView];[movieFile addTarget:filter];[filter addTarget:self.videoView];[movieFile startProcessing];movieRunning = YES;dispatch_async(dispatch_get_main_queue(), ^{self.playButton.hidden = YES;});player.rate = 1.0;
}

This method is called when user clicks on a filter button.

- (void)filterClicked:(UIButton *)button
{
// Set paused time. If player reaches end of the video, set pausedTime to 0.if (CMTimeCompare(pausedTime, player.currentItem.asset.duration)) {pausedTime = player.currentTime;
} else {pausedTime = CMTimeMake(0, 600.0);
}
[self.videoView setBackgroundColor:[UIColor clearColor]];[movieFile cancelProcessing];switch (button.tag)
{case 0:filter = nil;filter = [[GPUImageFilter alloc] init];break;case 1:filter = nil;filter = [[GPUImageColorInvertFilter alloc] init];break;case 2:filter = nil;filter = [[GPUImageEmbossFilter alloc] init];break;case 3:filter = nil;filter = [[GPUImageGrayscaleFilter alloc] init];break;default:filter = nil;filter = [[GPUImageFilter alloc] init];break;
}[self filterVideo];}

After filter generation, video play resume is handled in this method.

- (void)filterVideo {// AVPlayerItem is initialized with required urlplayerItem = [[AVPlayerItem alloc]initWithURL:self.outputUrl]; 
[player replaceCurrentItemWithPlayerItem:playerItem];//GPUImageMovie is initialized with AVPlayerItemmovieFile = [[GPUImageMovie alloc] initWithPlayerItem:playerItem];movieFile.runBenchmark = YES;
movieFile.playAtActualSpeed = YES;// Adding targets for movieFile and filter[movieFile addTarget:filter];
[filter addTarget:self.videoView]; // self.videoView is my GPUImageView[movieFile startProcessing];
movieRunning = YES;dispatch_async(dispatch_get_main_queue(), ^{self.playButton.hidden = YES;
});// Player rate is set to 0 means player is paused[player setRate:0.0];// Seeking to the point where video was pausedif (CMTimeCompare(pausedTime, player.currentItem.asset.duration) == 0) {[player play];} else {[player seekToTime:pausedTime];[player play];
}
}

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/4/185758.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息