rFlex / SCRecorder

iOS camera engine with Vine-like tap to record, animatable filters, slow motion, segments editing
Apache License 2.0
3.06k stars 583 forks source link

library selected video only display in sqaure #334

Open pramod7 opened 8 years ago

pramod7 commented 8 years ago

_I am uses this library to record video and showing it in next screen then apply filter using SCSwipeableFilterView, I am facing issue while selecting video from library, selected video only display in square mode, I am using same class here SCSwipeableFilterView.

//code uses to

      filterSwitcherView = [[SCSwipeableFilterView alloc] init];
        filterSwitcherView.frame = CGRectMake(0, 64, SCREEN_WIDTH, SCREEN_WIDTH);
        filterSwitcherView.contentMode = UIViewContentModeScaleToFill;
        SCFilter *emptyFilter = [SCFilter emptyFilter];
        emptyFilter.name = @"#nofilter";
        filterGroups = [[NSMutableArray alloc] initWithObjects: [UIImage new],
                        filterSwitcherView.filters = @[
                                                       emptyFilter,
                                                       [SCFilter filterWithCIFilterName:@"CIPhotoEffectChrome"],
                                                       [SCFilter filterWithCIFilterName:@"CIPhotoEffectFade"],
                                                       [SCFilter filterWithCIFilterName:@"CIPhotoEffectInstant"],
                                                       [SCFilter filterWithCIFilterName:@"CIPhotoEffectNoir"],
                                                       [SCFilter filterWithCIFilterName:@"CIPhotoEffectMono"],
                                                       [SCFilter filterWithCIFilterName:@"CIVignette"],
                                                       [SCFilter filterWithCIFilterName:@"CIPhotoEffectTonal"],
                                                       [SCFilter filterWithCIFilterName:@"CISepiaTone"],
                                                       [SCFilter filterWithCIFilterName:@"CIPhotoEffectProcess"],
                                                       ],nil];//[SCFilter filterWithCIFilterName:@"CIColorCube"]
        [self.view addSubview:filterSwitcherView];

player = [SCPlayer player]; player.loopEnabled = YES; player.delegate = self; [player setVolume:10]; player.autoRotate=NO; player.SCImageView = filterSwitcherView;

//**// I also tried different approach by using SCVideoPlayerView than video display fine as there respective mode (eg. landscape, portrait) but hurdle is, when I uses SCFilterImageView class apply filter its than black out comes,

//code uses


playerView = [[SCVideoPlayerView alloc] initWithPlayer:player];
    playerView.frame = CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_WIDTH);
    playerView.playerLayer.videoGravity = AVLayerVideoGravityResizeAspect;
    [self.view.superview insertSubview:playerView aboveSubview:self.view];
    [self.view addSubview:playerView];

// Render the video directly through a filter SCFilterImageView *filterView = [[SCFilterImageView alloc] initWithFrame:playerView.bounds]; filterView.filter = [SCFilter filterWithCIFilterName:@"CIPhotoEffectProcess"]; [playerView addSubview:filterView];

player.SCImageView = filterView;



``
twomedia commented 8 years ago

When you set the playerView and filterSwitchView frame you set the Width and Height to be both SCREEN_WIDTH (Which will mean you end up with a square frame).

Change this:

filterSwitcherView.frame = CGRectMake(0, 64, SCREEN_WIDTH, SCREEN_WIDTH);
playerView.frame = CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_WIDTH);

To this:

filterSwitcherView.frame = CGRectMake(0, 64, SCREEN_WIDTH, SCREEN_HEIGHT);
playerView.frame = CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
pramod7 commented 8 years ago

But in playerView, video is displayed proper by using, playerView.playerLayer.videoGravity = AVLayerVideoGravityResizeAspect;

as landscape Video in landscape mode, vise versa. but I am not fined anything like this when using SCSwipeableFilterView which always results video in square mode.