通过视频的URL来获取该视频的第一帧作为缩略图

小远ing 发布于 2016/04/18 13:48
阅读 1K+
收藏 0
在网上看到很多获取视频第一帧(哪一帧都可以,只要能获得)作为缩略图的方法都是用

AVFoundation框架,我自己用了网上找的代码并测试了下,无法获得第一帧图片。代码如下,希望有做过的朋友帮忙看下是什么原因,非常感谢!

 NSString * videoURL = @"http://192.168.42.1/DCIM/100MEDIA/BPRO0001.MP4";

 NSURL *url = [[NSURL alloc] initFileURLWithPath:videoURL];

 NSDictionary *opts = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:NO]

                                    forKey:AVURLAssetPreferPreciseDurationAndTimingKey];

    // 初始化媒体文件

    AVURLAsset *urlAsset = [AVURLAsset URLAssetWithURL:url options:opts];

    // 根据asset构造一张图

    AVAssetImageGenerator *generator = [AVAssetImageGeneratorassetImageGeneratorWithAsset:urlAsset];

    // 设定缩略图的方向

    // 如果不设定,可能会在视频旋转90/180/270°时,获取到的缩略图是被旋转过的,而不是正向的

    generator.appliesPreferredTrackTransform = YES;

    // 设置图片的最大size(分辨率)

    generator.maximumSize = CGSizeMake(164, 94);

    // 初始化error

    NSError *error = nil;

     CMTime time = CMTimeMakeWithSeconds(0.0, 600); //缩略图实际生成的时间

//    actucalTime.value = 1000;

    // 根据时间,获得第N帧的图片

    CMTime actucalTime;

    // CMTimeMake(a, b)可以理解为获得第a/b秒的frame

    CGImageRef img = [generator copyCGImageAtTime:time actualTime:&actucalTime error:&error];

    // 构造图片

    if (error) {

        NSLog(@"截取视频图片失败:%@",error.localizedDescription);

    }else{

       CMTimeShow(actucalTime);

        UIImage *image = [UIImage imageWithCGImage:img];

       UIImageWriteToSavedPhotosAlbum(image,nil, nil,nil);

        CGImageRelease(img);

        NSLog(@"视频截取成功");

      UIImageView * imageView = [[UIImageView alloc]init];

        imageView.frame = CGRectMake(0, 200, 375, 150);

        imageView.image = image;

        imageView.backgroundColor = [UIColor orangeColor];

        [self.view addSubview:imageView];

    }

运行时返回错误信息:

The requested URL was not found on this server.

但我的URL应该是没有问题的,我放网上的其他视频的URL也都是有这个错误信息,请大神帮忙看下,很急很急,在线等,谢谢!


加载中
返回顶部
顶部