2014-09-26 7 views
0

사진에서 비디오를 가져 와서 시간에 맞게 잘라내고, 너비와 높이를 변경하고, 프레임 속도를 재 렌더링 할 수 있어야합니다. 물론 내가 다음과 같이 시작해야합니다 :iOS8의 새 사진 프레임 워크를 사용하여 비디오를 다시 렌더링하십시오.

PHContentEditingInputRequestOptions *options = [[PHContentEditingInputRequestOptions alloc] init]; 

    [self.asset requestContentEditingInputWithOptions:options completionHandler:^(PHContentEditingInput *contentEditingInput, NSDictionary *info) { 

     // Get full image 

     NSURL *url = [contentEditingInput fullSizeImageURL]; 

    }]; 

나는 너비, 높이 및 길이를 조정할 수 있어야합니다. 그로부터 NSData를 가져 와서 syset.m 파일에 씁니다.

URL은 nil입니다. 이는 새 사진 프레임 워크로 비디오를 편집 할 수 없다는 것을 의미합니다. (ALAsset은 AVAssetExportSession을 사용하여이 문제가 발생하지 않았습니다.) 이것은 Apple Dev 샘플 코드가 비디오를 편집 할 수 없기 때문에 의미가 있습니다.

이제 인생을 더 편하게하기 위해 URL을 AVAssetExportSession에 전달할 수는 있지만 없으므로 사용할 수 없습니다. 폭, 높이 및 기간을 수정 한 경우 NSData를 가져 와서 파일 시스템에 써야합니다.

수정 된 비디오를 사진으로 다시 쓸 필요가 없습니다. 서버에 비디오를 업로드 할 것이므로 실제로 파일 시스템에 비디오가 필요합니다.

답변

2

fullSizeImageURL은 사진 저작물로 작업하기위한 것입니다. 비디오로 작업 할 때 avAsset 속성이 필요합니다. 새 비디오 파일을 작성하여 메타 데이터가 아닌 실제 비디오를 수정하십시오.

그렇게하려면, 당신은 AVMutableComposition에서 avAsset 것을 사용할 수 있습니다

AVMutableCompositionTrack에 avAsset의 비디오 트랙 (AVAssetTrack)의 해당 시간 범위를 삽입합니다. 그건 네 트리밍을 할거야.

레이어 명령을 사용하여 적절하게 배치/크기를 지정하십시오. (AVMutableVideoCompositionLayerInstruction) 자르기 및 크기 조정을 수행합니다.

+0

필자는 AVAssets가 Photos.framework가 출시 된 이후 잘 사용되지 않을 것이라고 생각했습니다. 내 코드가 이미 AVAssets를 사용하고 있기 때문에 내 인생이 쉽습니다. 나는 월요일에 그것을 검사 할 것이다. 감사! –

+0

문제 없습니다. AVAssets가 아닌 ALAssets입니다. 별도의 프레임 워크. – jlw

+0

잘 알고 있습니다. 덕분에 –