0

我正在开发管理应用程序的视频。我在滚动视图上添加视频。

除了黑屏,什么都看不见。此代码工作正常,仅在滚动时添加黑色视图,显示内容。

如果有人有任何想法,请提供给我。

(void)LoadVideosToScrollView
{    
    NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentDirectory=[paths objectAtIndex:0];
    NSString *videoDirectory=[documentDirectory stringByAppendingPathComponent:@"/videos"];
    NSFileManager *fileManger=[NSFileManager defaultManager];
    NSDirectoryEnumerator *docEnum=[fileManger enumeratorAtPath:videoDirectory];
    MPMoviePlayerController *localMoviePlayer;
    CGFloat xAxis=10;
    NSInteger n=0;
    NSString *fileName;

    [self.scrollView setContentSize:CGSizeMake(560, 200)];
    while ((fileName=[docEnum nextObject]))
    {
        NSString *filePath=[videoDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"/%@",fileName]];
        //if file exist then file will be added on ScrollView
        if ([fileManger fileExistsAtPath:filePath])
        {
            NSURL *urlForFile=[NSURL fileURLWithPath:filePath];
            NSLog(@"%@",[urlForFile description]);
            localMoviePlayer=[[MPMoviePlayerController alloc]initWithContentURL:urlForFile];
            localMoviePlayer.scalingMode=MPMovieScalingModeAspectFit;
            localMoviePlayer.shouldAutoplay=NO;
            localMoviePlayer.controlStyle=MPMovieControlStyleNone;
            [localMoviePlayer prepareToPlay];
            tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap:)];
            [localMoviePlayer.view addGestureRecognizer:tap];
            [localMoviePlayer.view setTag:n];
            [localMoviePlayer.view setFrame:CGRectMake(xAxis,5,150,120)];
            [self.scrollView addSubview:localMoviePlayer.view];
            [moviePlayerContainer addObject:urlForFile];
            xAxis+=155;
            n++;
        }
    }
}

我已经开发了这个代码。

4

2 回答 2

0

您需要改为使用AVPlayerMPMoviePlayerController因为AVPlayer您可以将视频渲染到特定的源视图 - 在您的情况下是滚动视图。

祝你好运

于 2013-05-10T07:41:14.070 回答
0

你没有调用 play 方法

// Plays items from the current queue, resuming paused playback if possible.
- (void)play;

尝试下一个代码

 _moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileURLWithPath:filePath]];

[[_moviePlayer view] setFrame:[[self view] bounds]];
[[self view] addSubview: [_moviePlayer view]];

_moviePlayer.scalingMode = MPMovieScalingModeAspectFit;

[_moviePlayer play];

如果你在一个滚动视图上有很多视频,你会遇到内存管理问题,为了优化显示视频列表的过程,你可以使用 UITableView 并将视频放在每个单元格上,因为 UITableView 已经有自己的单元格内存管理器。

于 2013-05-10T08:03:04.563 回答