gpt4 book ai didi

ios - 通过 GPUImageMovie 的视频过滤器无法播放干净的视频

转载 作者:行者123 更新时间:2023-11-29 10:41:38 24 4
gpt4 key购买 nike

我在我的项目中添加了用于视频编辑的 gpuimage 框架,但它无法播放干净的视频(根据屏幕截图)我检查了 gpuimage 框架中的示例,即“SimpleVideoFileFilter”, 但它也有同样的问题,音频干净,易于保存(此处未显示电影编剧代码)我检查了不同的视频格式,即“mp4”、“mov”、“m4v”,但有同样的问题

我的代码在下面,

.h文件

  #import <UIKit/UIKit.h>
#import <GPUImage.h>
#import <AVFoundation/AVFoundation.h>

@interface ViewController : UIViewController<GPUImageMovieDelegate>

@end

后面是.m文件

#import "ViewController.h"

@interface ViewController ()
{
GPUImageMovie *movieFile;
GPUImageOutput<GPUImageInput> *filter;
GPUImageMovieWriter *movieWriter;
}
@property (nonatomic,strong) GPUImageView *gpuImageViewObj;
@property (nonatomic,strong) AVPlayer *player;
@property (nonatomic,strong) AVPlayerItem *playerItem;
@end

@implementation ViewController
@synthesize gpuImageViewObj,player,playerItem;

- (void)viewDidLoad
{
[super viewDidLoad];

gpuImageViewObj = [[GPUImageView alloc] initWithFrame:CGRectMake(0, 0, 568, 320)];
[self.view addSubview:gpuImageViewObj];


[self try128];

}

-(void)try128{


//AVplayer
NSURL *sampleURL = [[NSBundle mainBundle] URLForResource:@"Sample" withExtension:@"m4v"];
playerItem = [[AVPlayerItem alloc]initWithURL:sampleURL];
player = [[AVPlayer alloc ]initWithPlayerItem:playerItem];
[player play];


//GPUImage movie
movieFile = [[GPUImageMovie alloc] initWithPlayerItem:playerItem];
// movieFile.runBenchmark = YES;
movieFile.playAtActualSpeed = YES;
movieFile.delegate = self;

//filter
filter = [[GPUImageFilter alloc] init];
[filter forceProcessingAtSize:gpuImageViewObj.sizeInPixels];

[movieFile addTarget:filter];
[filter addTarget:gpuImageViewObj];


[movieFile startProcessing];


player.actionAtItemEnd = AVPlayerActionAtItemEndNone;

[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(didCompletePlayingMovie)
name:AVPlayerItemDidPlayToEndTimeNotification
object:nil];

}


#pragma mark - GPUImageMovieDelegate

-(void)didCompletePlayingMovie
{
[[NSNotificationCenter defaultCenter] removeObserver:self name:AVPlayerItemDidPlayToEndTimeNotification object:nil];

[filter removeTarget:movieWriter];
// [movieFile endProcessing]; //not needed
NSLog(@"finish............");

}


#pragma mark -GPUImageMovieWriterDelegate


- (void)movieRecordingCompleted{
NSLog(@"movieRecordingCompleted called...");

// [movieWriter finishRecording];

}
- (void)movieRecordingFailedWithError:(NSError*)error{
NSLog(@"movieRecordingFailedWithError called...");

}

我的 o/p 图片

image shown filtered video

最佳答案

我猜您正试图在模拟器中运行它,而不是在实际设备上运行。电影播放从未在模拟器上正常运行,这就是其中之一。

相反,在实际的 iOS 硬件上进行开发。

关于ios - 通过 GPUImageMovie 的视频过滤器无法播放干净的视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24285979/

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