Slo-Mo播放MPMoviePlayerController

时间:2016-01-19 05:51:36

标签: ios objective-c ios9

我正在编写一个应用程序,需要能够播放所有用户的视频,包括Slo-Mo视频。我的代码适用于普通视频,但是Slo-Mo视频正在以正常速度播放(不是慢动作)。我用谷歌搜索并搜索了SO但是却找不到任何代码示例来让它工作。

我通过执行以下操作获取资产网址:

PHVideoRequestOptions *options = [PHVideoRequestOptions new];
options.deliveryMode =  PHVideoRequestOptionsDeliveryModeHighQualityFormat;
options.version = PHVideoRequestOptionsVersionOriginal;
[[PHImageManager defaultManager] requestAVAssetForVideo:asset options:options resultHandler:^(AVAsset *asset, AVAudioMix *audioMix, NSDictionary *info) {
    if ([asset isKindOfClass:[AVURLAsset class]])
        completion(((AVURLAsset *)asset).URL);
}];

然后我将URL传递给MPMoviePlayerController:

_moviePlayer.view.frame = self.view.frame;
_moviePlayer.allowsAirPlay = true;
_moviePlayer.shouldAutoplay = true;
_moviePlayer.movieSourceType = MPMovieSourceType.File;
_moviePlayer.scalingMode = MPMovieScalingMode.AspectFit;
_moviePlayer.controlStyle = MPMovieControlStyle.Default;
_moviePlayer.view.autoresizingMask = [UIViewAutoresizing.FlexibleHeight, UIViewAutoresizing.FlexibleWidth];
_moviePlayer.contentURL = url!;
_moviePlayer.prepareToPlay();
_moviePlayer.play();

非常感谢任何帮助。

由于

雅各

1 个答案:

答案 0 :(得分:3)

尝试更改MPMediaPlayback Protocol中声明的currentPlaybackRate属性。这是因为如果您使用PHVideoRequestOptionsVersionOriginal,Slo-Mo视频将以高FPS完全播放,而不是放慢速度。

另请注意,在iOS 9中不推荐使用MPMoviePlayerController。您应该使用AVPlayerViewController

AVPlayerViewController有一个AVPlayer作为播放器。您可以更改AVPlayer的rate属性以慢动作播放视频。如果您想编辑资产本身,请查看以下问题:How to do Slow Motion video in IOS