iOS AVPlayer 变慢

Posted

技术标签:

【中文标题】iOS AVPlayer 变慢【英文标题】:iOS AVPlayer slow down 【发布时间】:2016-05-16 07:54:15 【问题描述】:

我正在使用 AVPlayer 在我的项目中播放在线视频。视频播放良好。现在我想减少/增加视频的 fps。以下是我正在使用的代码:

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

现在我应该如何降低/提高在线视频的 fps?

【问题讨论】:

“我想降低/提高视频的 fps”是什么意思?这是否意味着您想要播放快进或慢动作,或者您想要播放不同分辨率的视频? 是的。我想“播放快进或慢动作”。 请查看我的回答,希望对您有所帮助 感谢您的帮助。 【参考方案1】:

你可以这样做,

 -(float)getFrameRateFromAVPlayer

   float fps=0.00;
   if (self.queuePlayer.currentItem.asset) 
     AVAssetTrack * videoATrack = [[videoAsset tracksWithMediaType:AVMediaTypeVideo] lastObject];
if(videoATrack)

    fps = videoATrack.nominalFrameRate;
  
   
    return fps;

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;


希望这会有所帮助:)

【讨论】:

【参考方案2】:

AVPlayer 允许您设置当前的播放速率。基本上,它接受一系列可能性值来控制当前的 AVPlayerItem,例如慢进、快进或反向播放。正如文档中所说,您应该检查当前项目是否可以支持这些播放状态

请尝试检查一下。供您参考的链接https://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVPlayer_Class/index.html#//apple_ref/occ/instp/AVPlayer/rate

【讨论】:

以上是关于iOS AVPlayer 变慢的主要内容,如果未能解决你的问题,请参考以下文章

iOS音频篇:AVPlayer的缓存实现

在 iOS 中获取 AVPlayer 的音量

iOS:如何停止直播 AVPlayer?

iOS开发 - AVPlayer实现流音频边播边存

iOS 开发 AVPlayer 深入浅出

iOS开发:AVPlayer实现流音频边播边存