IOS:不播放视频获取视频持续时间和缩略图

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (14)

我需要获得(本地)视频的持续时间,然后以UIImages 身份访问其各个帧。到目前为止,我一直在使用MPMoviePlayerController

首先我注册MPMovieDurationAvailableNotification活动,然后调用prepareToPlay。当收到事件时,我注意到视频的持续时间,然后我通过请求帧requestThumbnailImagesAtTimes

这是有效的,但是即使我没有以任何方式将视频添加到视图(我可以听到背景中播放的音频),视频似乎也开始播放。

有没有什么方法可以在没有真正播放视频的情况下获得视频的持续时间和帧数?

提问于
用户回答回答于

要获得持续时间:

NSURL *sourceMovieURL = [NSURL fileURLWithPath:somePath];
AVURLAsset *sourceAsset = [AVURLAsset URLAssetWithURL:sourceMovieURL options:nil];
CMTime duration = sourceAsset.duration;

为了得到一个框架:

AVAssetImageGenerator* generator = [AVAssetImageGenerator assetImageGeneratorWithAsset:destinationAsset];

//Get the 1st frame 3 seconds in
int frameTimeStart = 3;
int frameLocation = 1;

//Snatch a frame
CGImageRef frameRef = [generator copyCGImageAtTime:CMTimeMake(frameTimeStart,frameLocation) actualTime:nil error:nil];
用户回答回答于

你可以像这样

func getMediaDuration(url: NSURL!) -> Float64{
    let asset : AVURLAsset = AVURLAsset(URL: url) as AVURLAsset
    let duration : CMTime = asset.duration
    return CMTimeGetSeconds(duration)
}

扫码关注云+社区