美文网首页iOS开发者进阶
iOS获取视频文件大小和时长

iOS获取视频文件大小和时长

作者: __Mr_Xie__ | 来源:发表于2024-04-06 15:44 被阅读0次

获取网络链接的视频大小和时长

AVURLAsset *asset = [AVURLAsset URLAssetWithURL:url options:nil];// url:网络视频的连接
    NSArray *arr = [asset tracksWithMediaType:AVMediaTypeVideo];// 项目中是明确媒体类型为视频,其他没试过
    CGSize videoSize =CGSizeZero;

    for (AVAssetTrack *track in arr) {
     if([track.mediaType isEqualToString:AVMediaTypeVideo])
     {
        if (track.totalSampleDataLength >= 1048576) {//1048576bt = 1M  小于1m的显示KB 大于1m显示M
            lable.text = [NSString stringWithFormat:@"%.2lldM",track.totalSampleDataLength/1024/1024];
        } else {
            lable.text = [NSString stringWithFormat:@"%.1lldKB",track.totalSampleDataLength/1024];
        }
           videoSize = track.naturalSize; 
      }
    }

获取保存在你APP沙盒中的视频文件

#import <AVFoundation/AVFoundation.h>

/**
 * @method
 *
 * @brief 根据路径获取视频时长和大小
 * @param path       视频路径
 * @return    字典    @"size"--文件大小   @"duration"--视频时长
 */
- (NSDictionary *)getVideoInfoWithSourcePath:(NSString *)path{
    AVURLAsset * asset = [AVURLAsset assetWithURL:[NSURL fileURLWithPath:path]];
    CMTime   time = [asset duration];
    int seconds = ceil(time.value/time.timescale);

    NSInteger   fileSize = [[NSFileManager defaultManager] attributesOfItemAtPath:path error:nil].fileSize;

    return @{@"size" : @(fileSize),
             @"duration" : @(seconds)};
}

获取PHAsset文件大小

有两种方式:

  • 方式一
 PHAssetResource *resource = [[PHAssetResource assetResourcesForAsset:asset] firstObject];
 long long size = [[resource valueForKey:@"fileSize"] longLongValue];
  • 方式二
 PHVideoRequestOptions *options = [[PHVideoRequestOptions alloc] init];
    options.version = PHVideoRequestOptionsVersionOriginal;
    [[PHImageManager defaultManager] requestAVAssetForVideo:asset options:options resultHandler:^(AVAsset *asset, AVAudioMix *audioMix, NSDictionary *info) {
        if ([asset isKindOfClass:[AVURLAsset class]]) {
            AVURLAsset* urlAsset = (AVURLAsset*)asset;
            NSNumber *size;
            [urlAsset.URL getResourceValue:&size forKey:NSURLFileSizeKey error:nil];
            dispatch_async(dispatch_get_main_queue(), ^{

            });
        } else {
            imageLable.text = [NSString stringWithFormat:@"0KB"];
        }
    }];

相关文章

网友评论

    本文标题:iOS获取视频文件大小和时长

    本文链接:https://www.haomeiwen.com/subject/etnatjtx.html