UIImagePickerController
을 사용하여 여러 비디오 클립을 녹화 한 다음 Vine 응용 프로그램과 비슷한 방법으로 단일 비디오로 합성하십시오. 누구든지 비디오 클립을 단일 비디오로 결합 할 수있는 방법에 대해 올바른 방향으로 나를 가리킬 수 있습니까?비디오 클립을 Vine 같은 단일 비디오로 결합하십시오.
7
A
답변
1
레이 Wenderlich의 사이트에는이를 다루는 자습서가 있습니다. http://www.raywenderlich.com/13418/how-to-play-record-edit-videos-in-ios
0
다음은 부분적으로 Ray Wenderlich의 블로그를 기반으로 동영상을 결합하는 방법의 예입니다.
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
[appDelegate.playerLayer removeFromSuperlayer];
if (self.firstAsset)
{
self.secondAssetURL = [info objectForKey:UIImagePickerControllerMediaURL];
self.secondAsset = [AVAsset assetWithURL:self.secondAssetURL];
}
else
{
self.firstAssetURL = [info objectForKey:UIImagePickerControllerMediaURL];
self.firstAsset = [AVAsset assetWithURL:self.firstAssetURL];
}
if (self.secondAsset)
{
CMTime recordTime = CMTimeMakeWithSeconds(self.recordTime, NSEC_PER_SEC);
AVMutableComposition *mixComposition = [AVMutableComposition new];
AVMutableCompositionTrack *videoTrack = [mixComposition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];
[videoTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, self.firstAsset.duration) ofTrack:[[self.firstAsset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0] atTime:kCMTimeZero error:nil];
[videoTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, self.secondAsset.duration)
ofTrack:[[self.secondAsset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0] atTime:recordTime error:nil];
AVURLAsset *firstAudioAsset = [[AVURLAsset alloc] initWithURL:self.firstAssetURL options:nil];
AVURLAsset *secondAudioAsset = [[AVURLAsset alloc] initWithURL:self.secondAssetURL options:nil];
AVAssetTrack *firstAudioTrack = [[firstAudioAsset tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0];
AVAssetTrack *secondAudioTrack = [[secondAudioAsset tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0];
AVMutableCompositionTrack *compositionAudioTrack = [mixComposition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid];
[compositionAudioTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, firstAudioAsset.duration) ofTrack:firstAudioTrack atTime:kCMTimeZero error:nil];
[compositionAudioTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, secondAudioAsset.duration) ofTrack:secondAudioTrack atTime:recordTime error:nil];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *myPathDocs = [documentsDirectory stringByAppendingPathComponent:
[NSString stringWithFormat:@"mergeVideo-%d.mov",arc4random() % 1000]];
NSURL *url = [NSURL fileURLWithPath:myPathDocs];
// 5 - Create exporter
AVAssetExportSession *exporter = [[AVAssetExportSession alloc] initWithAsset:mixComposition
presetName:AVAssetExportPresetHighestQuality];
exporter.outputURL=url;
exporter.outputFileType = AVFileTypeQuickTimeMovie;
exporter.shouldOptimizeForNetworkUse = YES;
[exporter exportAsynchronouslyWithCompletionHandler:^{
NSLog(@"we are now exporting");
int exportStatus = exporter.status;
switch (exportStatus) {
case AVAssetExportSessionStatusFailed: {
// log error to text view
NSError *exportError = exporter.error;
NSLog (@"AVAssetExportSessionStatusFailed: %@", exportError);
break;
}
case AVAssetExportSessionStatusCompleted: {
NSLog (@"AVAssetExportSessionStatusCompleted");
self.firstAssetURL = exporter.outputURL;
self.firstAsset = [AVAsset assetWithURL:self.firstAssetURL];
dispatch_async(dispatch_get_main_queue(), ^{
[self layoutVideo:exporter.outputURL];
});
break;
}
default: { NSLog (@"didn't get export status"); break;}
}
}];
}
else
{
[self layoutVideo:[info objectForKey:@"UIImagePickerControllerMediaURL"]];
}
}
관련 문제
- 1. Instagram/Vine ... 같은 Android의 목록을 만듭니다.
- 2. 단일 이미지에서 비디오로 C#
- 3. Android Vine/Instagram 스타일 비디오 녹화
- 4. Vine 루핑 비디오 재생은 iOS에서 어떻게 작동합니까?
- 5. youtube : 비디오 파일의 배열을 병합하고 단일 비디오로 업로드
- 6. 작은 비디오 클립을 배경으로 추가하십시오.
- 7. 비디오 클립을 검정색으로 페이드 화
- 8. WinJS 비디오 파일 결합
- 9. 2D 비디오 입력 시퀀스를 3D 비디오로 변환
- 10. 비디오 경로를 비디오로 변경하는 방법 Uri
- 11. 반송파 비디오로 비디오 메타 데이터 얻기
- 12. FFmpeg 비디오 시퀀스를 비디오로 변환하면 빈 비디오가됩니다.
- 13. 자동으로 비디오 포맷을 플래시 비디오로 변환
- 14. 동영상 파일을 오디오 및 비디오로 분할 Psychtoolbox
- 15. 재생하는 동안 프로그래밍 방식으로 비디오 클립을 어떻게 수정합니까?
- 16. Vine like navigation controller
- 17. 텍스트를 스캔하거나 읽음으로써 비디오 클립을 시작하십시오.
- 18. 비디오 클립을 병합하는 자동화 된 클라우드 서비스
- 19. 파이썬에서 비디오 클립을 재생하는 방법은 무엇입니까?
- 20. 플래시 애니메이션을 비디오로 변환
- 21. GIF를 Android에서 비디오로 변환하십시오.
- 22. zip과 같은 폴더와 파일을 결합하십시오.
- 23. 같은 이름으로 여러 열을 결합하십시오.
- 24. 다른 열이있는 테이블을 단일 열로 결합하십시오.
- 25. 오디오에서 비디오로 변환
- 26. 캔버스를 비디오로 내보내기
- 27. MySQL 두 테이블을 같은 테이블에 결합하십시오.
- 28. 여러 비디오 클립을 포함하는 AVI 파일을 생성하는 FFMPEG API
- 29. 이미지 시퀀스를 비디오로 변환
- 30. 이미지를 압축 비디오로 변환