簡體   English   中英

獲取從UIImagePickerController中選擇的原始視頻名稱

[英]Get original video name as selected from UIImagePickerController

如何在UIImagePickerController的委托方法中獲取從“相機膠卷”或任何其他相冊中選擇的視頻文件的名稱?

我可以獲取圖像的名稱,但是如果在視頻中使用圖像名稱,則返回nil

Swift 4或更高版本在“我的身邊”工作以捕獲圖像

采用 :

    imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]){
            let fileName = FileInfo.getMediaName(info: info)
      }

類:請把方法信息[:]

class FileInfo {
    // Return Media name
    static func getMediaName(info:[String : Any]) -> String {

        if let asset = info[UIImagePickerControllerPHAsset] as? PHAsset {
            let assetResources = PHAssetResource.assetResources(for: asset)
            let firstObj = assetResources.first?.originalFilename as! NSString
            print(firstObj)
            return firstObj
        }
    }
}

// IMG_02256.jpeg

     - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

        NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];

            if (![mediaType isEqualToString:(NSString *)kUTTypeMovie])
                return;

            mediaURl = [info objectForKey:UIImagePickerControllerMediaURL];

            //NSLog(@"mediaURL %@",mediaURl);
            moviePath = mediaURl.absoluteString;
            //  NSLog(@"moviePath %@",moviePath);
            tempFilePath = [[info objectForKey:UIImagePickerControllerMediaURL] path];
            NSLog(@"filepath %@",tempFilePath);
            //if you want only file name
            NSArray *ar = [tempFilePath componentsSeparatedByString:@"/"];
            NSString *filename = [[ar lastObject] uppercaseString];
            NSLog(@"filename %@",filename);
    }

如果您有任何問題,請告訴我

我知道這個線程非常老,但是我想如果有人找到它,這是一個迅速的工作答案:

func fileName(for infoDict: [String : Any]) -> String? {
    guard let referenceURL = infoDict[UIImagePickerControllerReferenceURL] as? URL else { return nil }
    let result = PHAsset.fetchAssets(withALAssetURLs: [referenceURL], options: nil)
    guard let asset = result.firstObject else { return nil }
    let firstResource = PHAssetResource.assetResources(for: asset).first
    return firstResource?.originalFilename ?? asset.value(forKey: "filename") as? String
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM