GPUImageMovie在initWithPlayerItem时不播放视频文件

时间:2014-06-06 14:42:59

标签: gpuimage

我正在使用带有initWithPlayerItem的GPUImageMovie,而不是在startProcessing上启动电影文件。它与initWithUrl工作正常,但我需要在this线程中告知播放器的播放控件。我使用以下代码

-(void)loadVideo
{
    _playerItem = [[AVPlayerItem alloc]initWithURL:movieURL];
    _player = [AVPlayer playerWithPlayerItem:_playerItem];
    movieFile = [[GPUImageMovie alloc] initWithPlayerItem:_playerItem];

    movieFile.runBenchmark = YES;
    movieFile.playAtActualSpeed = YES;

    filter = [[TSFilter alloc] init];
    _movieView = [[GPUImageView alloc] initWithFrame:self.view.bounds];

    [self.view addSubview:_movieView];
    [self.view sendSubviewToBack:_movieView];

    [movieFile addTarget:filter];
    [filter addTarget:_movieView];

    _player.rate = 1.0;

    [movieFile startProcessing];

    [_player play];

}

1 个答案:

答案 0 :(得分:2)

最后我花了很多时间才找到解决这个愚蠢问题的方法。当我尝试使用捆绑文件而不是文档目录中的文件时,我找到了解决方案。我认为这是AVPlayerItem中的错误:initWithUrl方法不能使用文档目录中的NSUrl值。让我详细解释一下

当我从文档目录中获取文件的Url时,其值为

/var/mobile/Applications/7B3229B0-D18E-405D-BBA0-E9D57F2842C4/Documents/SkyFall_clip.m4v

但是如果我捆绑了这个文件并从[NSBundle mainBundle]获取了网址,那么它的值是

文件:///var/mobile/Applications/7B3229B0-D18E-405D-BBA0-E9D57F2842C4/Documents/SkyFall_clip.m4v

所以我发现" file://"文档目录文件的URL中缺少关键字。所以我只是追加" file://"在网址的开头,它开始工作。虽然情况并非如此,因为两者都是有效的NSUrl,并且适用于其他类,如UIImage。

注意:实现字符串追加操作只有在缺少时才附加。