UIImagePickerController
を使用して、複数のビデオクリップを録画してから、Vineアプリと同様に1つのビデオにステッチします。誰かがビデオクリップをどのようにして1つのビデオにまとめることができるかについて、正しい方向で私を指摘できますか?ビデオクリップをVineのように1つのビデオにまとめます
7
A
答えて
1
Ray Wenderlichのサイトには、これをカバーするチュートリアルがあります。 http://www.raywenderlich.com/13418/how-to-play-record-edit-videos-in-ios
0
ここでは、レイウェンデリックのブログに部分的に基づいてビデオをつなぎ合わせる方法の例を示します。
-(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 ...のようなビデオのリストを作成する
- 2. アクティブにする方法/ビデオの背景とビデオのソースを削除するartoolkitを1つにまとめる
- 3. Javaでビデオを1つにまとめる
- 4. c#.netを使用して2つのビデオを1つにまとめる
- 5. 複数のビデオクリップをプログラムで1つのビデオファイルにマージ&圧縮
- 6. ララベルの2つのコレクションを1つにまとめます
- 7. Vine、Instagram、TwitterのようなカメラAPIを使ってアンドロイドでビデオを記録するには?
- 8. 2つのMicrosoft Accessデータベースを1つのフォームにまとめて1つにまとめる
- 9. 棒グラフとyerrorlinesを1つのプロットにまとめます
- 10. dvb:オーディオとビデオを1つの188バイトのパケットにまとめることは可能ですか?
- 11. 多くのXMLファイルを1つのデータフレームにまとめます。
- 12. 多くのシートのデータを1つにまとめます
- 13. PostgreSQL:regexp_split_to_tableの結果を1つの列にまとめますか?
- 14. パフォーマンスのために2つのクエリを1つのクエリに組み合わせようとしています
- 15. CSSラインを1つにまとめる
- 16. 2行を1つにまとめる
- 17. 2行を1つにまとめる
- 18. SQLクエリを1つにまとめる
- 19. iOS NSArrayを1つにまとめる
- 20. xmlタグを1つにまとめる
- 21. テーブルを1つにまとめる
- 22. どのようにして1つの画面で2つのビデオを再生できますか?
- 23. 2つのクエリを1つにまとめてソートする
- 24. 2つのDockerイメージを1つにまとめる:NodeJSとMongoDB
- 25. maven multi-module-project jarsを1つのディレクトリにまとめます。
- 26. グループを1つの行にまとめます。
- 27. MVC4とMVC5を1つのソリューションにまとめました
- 28. フォームとPHPを1つのファイルにまとめました
- 29. 2つのフィールドの値を1つのコレクションにまとめる
- 30. SELECTで2つのテーブルを1つにまとめるにはどうすればよいですか?