iOS AVPlayer тормозит

Я использую AVPlayer для воспроизведения онлайн-видео в своем проекте. Видео воспроизводится хорошо. Теперь я хочу уменьшить/увеличить частоту кадров видео. Ниже приведен мой код, который я использую:

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];
}

Теперь, как я должен уменьшить/увеличить частоту кадров для онлайн-видео?


person Rupshikha    schedule 16.05.2016    source источник
comment
Что вы имеете в виду, говоря, что я хочу уменьшить/увеличить частоту кадров видео? Означает ли это, что вы хотите воспроизводить ускоренную или замедленную съемку или хотите воспроизводить видео в разных разрешениях?   -  person HSG    schedule 16.05.2016
comment
я. Я хочу воспроизвести ускоренную перемотку вперед или замедленную съемку.   -  person Rupshikha    schedule 19.05.2016
comment
Пожалуйста, проверьте мой ответ, надеюсь, что это поможет вам   -  person HSG    schedule 20.05.2016
comment
Спасибо за помощь.   -  person Rupshikha    schedule 21.05.2016


Ответы (2)


Вы можете сделать что-то вроде,

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

OR

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;
}
}

Надеюсь, это поможет :)

person Ketan Parmar    schedule 16.05.2016

AVPlayer позволяет установить текущую скорость воспроизведения. По сути, он принимает диапазон значений возможностей для управления текущим AVPlayerItem, таких как медленное воспроизведение вперед, ускоренное воспроизведение вперед или назад с отрицательными скоростями. Как сказано в документе, вы должны проверить, может ли текущий элемент поддерживать эти состояния воспроизведения.

введите здесь описание изображения

Пожалуйста, попробуйте проверить это. Ссылка для справки https://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVPlayer_Class/index.html#//apple_ref/occ/instp/AVPlayer/rate

person HSG    schedule 20.05.2016