2016-06-24 3 views
1

、 を私はこのようにそれを作成します。私はスタートを切るカントと呼ばれるデリゲートメソッドでカントはUIImagePickerController didFinishPickingMediaWithInfoに開始と終了編集時間を取得する:私はビデオを編集し、それをカットするUIImagePickerControllerを使用し

UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; 
imagePicker.delegate = self; 
[imagePicker setVideoQuality:UIImagePickerControllerQualityType640x480]; 
imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 
imagePicker.mediaTypes = @[(__bridge NSString *)kUTTypeMovie, (__bridge NSString *)kUTTypeVideo, (__bridge NSString *)kUTTypeMPEG4]; 
imagePicker.allowsEditing = YES; 
[self.navigationController presentViewController:imagePicker animated:YES completion:nil]; 

が、残念ながら終了編集時間 - 編集したビデオを保存する:

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info { 

    [picker dismissViewControllerAnimated:YES completion:^{ 

    }]; 

    NSString *type = [info objectForKey:UIImagePickerControllerMediaType]; 
    if ([type isEqualToString:(NSString *)kUTTypeVideo] || 
     [type isEqualToString:(NSString *)kUTTypeMovie]) { // movie != video 
     NSURL *videoURL = [info objectForKey:UIImagePickerControllerMediaURL]; 


     NSNumber *start = [info objectForKey:@"_UIImagePickerControllerVideoEditingStart"]; 
     NSNumber *end = [info objectForKey:@"_UIImagePickerControllerVideoEditingEnd"]; 

} 

私の場合、開始と終了はゼロです。私はこの情報をどのように入手するのか分かりません。それを手に入れる方法を教えてください。 ご協力いただきありがとうございます。

答えて

1

私は自分のコードをチェックし、実行して、私は_UIImagePickerControllerVideoEditingStart_UIImagePickerControllerVideoEditingEndリターンのみを撮影していること、カメラからの映像を見つけましたが、あなたはあなたのPhotoLibraryあなたが情報の辞書では、この二つの重要取得していないから選択したビデオであれば:あなたの場合は

をその後、あなたは情報の辞書のログ次しまいますimagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;を使用している:

UIImagePickerControllerMediaType = "public.movie"; 
    UIImagePickerControllerMediaURL = "file:///private/var/mobile/Containers/Data/Application/BCBE6A30-1A92-41BB-8734-BFF052E416DE/tmp/trim.59737F15-FC2A-4EB7-89AE-DF3831089657.MOV"; 
    UIImagePickerControllerReferenceURL = "assets-library://asset/asset.MOV?id=87E3E50A-1DBF-449F-8BE3-AB36E718D82C&ext=MOV"; 

あなたは、あなたが情報の辞書のログ次しまいますimagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;を使用している場合:

UIImagePickerControllerMediaType = "public.movie"; 
    UIImagePickerControllerMediaURL = "file:///private/var/mobile/Containers/Data/Application/611D33A4-61F4-4CD0-934D-C0EFF82B75AC/tmp/capture/capturedvideo.MOV"; 
    "_UIImagePickerControllerVideoEditingEnd" = "2.360877976190476"; 
    "_UIImagePickerControllerVideoEditingStart" = "1.360505952380952"; 

したがって最後にUIImagePickerControllerSourceTypePhotoLibraryでUIImagePickerControllerは_UIImagePickerControllerVideoEditingStart_UIImagePickerControllerVideoEditingEndキーを提供しません。開始時刻が0で終了時刻が完全な時間であるとする次のコードのように、AVURLAssetを使用して継続時間を取得できます。

AVURLAsset *Asset = [AVURLAsset assetWithURL:videoURL]; 
CMTime duration = [Asset duration]; 
int fullduration = ceil(duration.value/duration.timescale); 
+1

ありがとうございます!はい、私はそれを得ました、説明のおかげで。トリミングされたビデオをオーディオファイルに変換しなければならなかったので、最終的にUIImagePickerControllerMediaURLを使用してオーディオに変換しました。もう一度ありがとう! – Melany

+0

ところで、UiImagePickerControllerを使用する可能性があるかどうかは、ライブラリに入力せずに、選択したビデオに直接入れるだけですか? – Melany

+0

はい、あなたは 'UAImagePickerController'を使う必要がない' ALAssetsLibrary'を使うことができます。あなたはそのチェックのために独自のUIを作る必要があります:http://stackoverflow.com/questions/17585908/how-can-i-get-the-すべてのビデオファイルの一覧 - ライブラリ-i-ios-sdk –

関連する問題