Play/Forward video in 2x 3x 4x speed - iPhone SDK

2019-01-19 08:20发布

问题:

I want to play/forward video in MPMoviePlayerController with different speeds. Can any one suggest me how i do this.

Right now i am doing fast forward (On single speed) but in few seconds it come back on normal speed.

Please suggest.

回答1:

MPMoviePlayerController Conforms to MPMediaPlayback protocol 
you can see the property currentPlaybackRate as :-
@property(nonatomic) float currentPlaybackRate 
A value of 0 represents that the video is stopped , a value of 1 indicates normal speed and further positive values indicate increased speed while negative ones indicate reverse .

Also check your endseeking delegate method of MPMediaPlayback as it is the only method that reverts the playback to normal



回答2:

Here is a code to Forward and BackWard Movie as 2x 3x 4x speed for MPMoviePlayerViewController

In .h File

@property(nonatomic) float currentPlaybackRate;

In .m File

- (void)viewDidLoad
{
    currentPlaybackRate=1.0; //video Play in Normal speed
}

Now on FastForward and FastBackward Button Action

[fastForward addTarget:self action:@selector(fastForward) forControlEvents:UIControlEventTouchUpInside];

[fastBackWard addTarget:self action:@selector(fastBackward) forControlEvents:UIControlEventTouchUpInside];

Action Code

-(void)fastForward
{
    [mp.moviePlayer pause];
    playPauseButton.selected=TRUE;
    if (currentPlaybackRate < 0.0) {
        currentPlaybackRate = 1.0;
    }

    if (currentPlaybackRate < 4.0) {
        currentPlaybackRate=currentPlaybackRate+1.0;
        NSLog(@"Forward::%f",currentPlaybackRate);
        mp.moviePlayer.currentPlaybackRate=currentPlaybackRate;
    }
}
-(void)fastBackward
{
    [mp.moviePlayer pause];
    playPauseButton.selected=TRUE;

    if (currentPlaybackRate > 0.0) {
        currentPlaybackRate = 0.0;
    }


    if (currentPlaybackRate > -4.0) {
        currentPlaybackRate=currentPlaybackRate-1.0;
        NSLog(@"BackWard::%f",currentPlaybackRate);
        mp.moviePlayer.currentPlaybackRate=currentPlaybackRate;
    }
}