2017-04-26 4 views
2

에서 썸네일은 내가 다음 코드 한 스위프트 (3)에서 장치에 로컬로 저장 동영상에서 썸네일을 작성해야합니다 : 나는 비디오를 촬영하고 저장할 때스위프트 3 : 비디오

func fetchFirstFrameOf(videoPath urlString: String) -> UIImage? { 
    let filePath = URL(fileURLWithPath: urlString).absoluteURL 

    let asset = AVURLAsset(url: filePath, options: nil) 
    let imgGenerator = AVAssetImageGenerator(asset: asset) 
    imgGenerator.appliesPreferredTrackTransform = false 

    do { 
     let cgImage = try imgGenerator.copyCGImage(at: CMTimeMake(0, 1), actualTime: nil) 
     let thumbnail = UIImage(cgImage: cgImage) 

     return thumbnail 

    } catch let error { 
     print("*** Error generating thumbnail: \(error)") 
     return nil 
    } 
} 

지금이 작동합니다. 내가 나중에에서 응용 프로그램을 다시 시작할 때, 더 썸네일이 표시되지 않고 다음과 같은 오류가 발생합니다 :

*** 오류 발생 축소판 : 오류 도메인 = NSURLErrorDomain 코드 = -1100 "주어진 URL을 찾을 수 없습니다 이 서버 나 파일 경로를 초기화하려고

"{해당 파일이나 디렉토리를"} 사용자 정보 = NSLocalizedDescription는 = 주어진 URL이 서버, NSUnderlyingError = 0x170255990 {오류 도메인 = NSPOSIXErrorDomain 코드 = 2에서 찾을 수 없습니다 "에게} URL (string : filepath), 그러나 운이 없다.

동영상을 촬영 한 직후에 작동합니다. 앱을 다시 열고 다시 실패 할 때까지 ...

+2

경로는 어디에 있습니까? 문서 폴더에 있습니까? 절대 저장하고 재사용하지 마십시오. 앱의 샌드 박스가 변경 될 수 있습니다. – rmaddy

+0

이것은 생성하는 URL입니다 (이미 절대 경로가 제거되었습니다). file : /// private/var/mobile/Containers/Data/Application/4280210D-6479-4036-AF5C-E9005070F57C/tmp/51473631576__912FB214-4D3A- 4A0C-A5D4-D6F166D1DC06.MOV – AndrewH

답변

1

그래서 임시 주소 (URL의 비공개 및 tmp는 내게 알려 줘야합니다.)에 액세스하려고했기 때문에 문제가 발생했다고 생각합니다.

동영상 제작을 마치고 문서 디렉토리로 이동했습니다.