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 变慢的主要内容,如果未能解决你的问题,请参考以下文章