2016-05-16 6 views
0

J'utilise AVPlayer pour lire des vidéos en ligne dans mon projet. La vidéo joue bien. Maintenant, je veux réduire/augmenter le fps de la vidéo. Ci-dessous est mon code que j'utilise:iOS AVPlayer ralentir

self.asset = [AVAsset assetWithURL:self.videoUrl]; 
// the video player 
self.player = [AVPlayer playerWithURL:self.videoUrl]; 
self.player.actionAtItemEnd = AVPlayerActionAtItemEndNone; 

self.playerLayer = [AVPlayerLayer playerLayerWithPlayer:self.player]; 
self.playerLayer.videoGravity = AVLayerVideoGravityResizeAspectFill; 

[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(playerItemDidReachEnd:) 
              name:AVPlayerItemDidPlayToEndTimeNotification 
              object:[self.player currentItem]]; 


self.playerLayer.frame = CGRectMake(0, 0, self.view.frame.size.width, self.myPlayerView.frame.size.height); 
[self.myPlayerView.layer addSublayer:self.playerLayer]; 

- (void)playerItemDidReachEnd:(NSNotification *)notification { 
    AVPlayerItem *p = [notification object]; 
    [p seekToTime:kCMTimeZero]; 
} 

Maintenant, comment puis-je réduire/augmenter le fps pour la vidéo en ligne?

+0

Que voulez-vous dire par "je veux réduire/augmenter le fps de la vidéo"? Est-ce que cela veut dire que vous voulez jouer en avance rapide ou en ralenti, ou vous voulez lire une vidéo dans différentes résolutions? – HDT

+0

yo. Je veux "jouer en avance rapide ou en ralenti". – Rupshikha

+0

S'il vous plaît vérifier ma réponse, j'espère que cela vous aiderait – HDT

Répondre

1

Vous pouvez faire quelque chose comme,

-(float)getFrameRateFromAVPlayer 
{ 
    float fps=0.00; 
    if (self.queuePlayer.currentItem.asset) { 
    AVAssetTrack * videoATrack = [[videoAsset tracksWithMediaType:AVMediaTypeVideo] lastObject]; 
if(videoATrack) 
{ 
    fps = videoATrack.nominalFrameRate; 
    } 
    } 
    return fps; 
} 

OU

AVPlayerItem *item = AVPlayer.currentItem; // Your current item 
float fps = 0.00; 
for (AVPlayerItemTrack *track in item.tracks) { 
if ([track.assetTrack.mediaType isEqualToString:AVMediaTypeVideo]) { 
    fps = track.currentVideoFrameRate; 
} 
} 

Espérons que cela aidera :)

1

AVPlayer vous permet de définir le taux actuel de la lecture. Fondamentalement, il accepte une gamme de valeurs de possibilité pour contrôler l'AVPlayerItem actuel tel que jouer lentement, avancer ou reculer avec des taux négatifs. En disant dans le document, vous devriez vérifier si oui ou non l'élément en cours peut prendre en charge les États de jouer

enter image description here

S'il vous plaît essayer de le vérifier. Le lien pour votre référence https://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVPlayer_Class/index.html#//apple_ref/occ/instp/AVPlayer/rate