UIVideoEditorController在iPad上崩溃

时间:2017-04-02 12:29:08

标签: ios iphone xcode ipad video

我尝试使用UIVideoEditorController编辑存储在应用文档目录中的视频。 它适用于iPhone(使用iOS 10.x),但在iPad上崩溃(使用iOS 9.2)。

我可能需要添加应用程序在横向模式下运行。如文档中所述,UIVideoEditorController仅在纵向模式下运行。但是,既然它在iPhone上工作,我认为这不应该成为一个问题吗?

这就是我做的事情(委托 - 方法都已实施,但未在此处提及):

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [NSString stringWithString: [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat: @"myMovie_%li.MOV", (long)self.editMovie]]];

UIVideoEditorController *vec = [[UIVideoEditorController alloc] init];

vec.delegate = self;

NSLog(@"Editing video %@", vec);

if ( [UIVideoEditorController canEditVideoAtPath:filePath] )
{           
    [self presentViewController:vec animated:NO completion:nil];
}
else
{
    NSLog( @"can't edit video at %@", filePath );
}

这就是Crash-Log:

objc[6507]: EXCEPTIONS: throwing 0x17648b30 (object 0x17648a90, a NSException)
objc[6507]: EXCEPTIONS: searching through frame [ip=0xffffffff sp=0x559900] for exception 0x17648b10
objc[6507]: EXCEPTIONS: searching through frame [ip=0x2 sp=0x55a880] for exception 0x17648b10
objc[6507]: EXCEPTIONS: unwinding through frame [ip=0xffffffff sp=0x559900] for exception 0x17648b10
objc[6507]: EXCEPTIONS: unwinding through frame [ip=0x2 sp=0x55a880] for exception 0x17648b10
objc[6507]: EXCEPTIONS: handling exception 0x17648b10 at 0x2236b2f9
objc[6507]: EXCEPTIONS: rethrowing current exception
objc[6507]: EXCEPTIONS: searching through frame [ip=0x6 sp=0x55a880] for exception 0x17648b10
objc[6507]: EXCEPTIONS: searching through frame [ip=0x3 sp=0x55aa20] for exception 0x17648b10
objc[6507]: EXCEPTIONS: catch(NSException)
objc[6507]: EXCEPTIONS: unwinding through frame [ip=0x6 sp=0x55a880] for exception 0x17648b10
objc[6507]: EXCEPTIONS: finishing handler
objc[6507]: EXCEPTIONS: unwinding through frame [ip=0xffffffff sp=0x55a880] for exception 0x17648b10
objc[6507]: EXCEPTIONS: unwinding through frame [ip=0x3 sp=0x55aa20] for exception 0x17648b10
objc[6507]: EXCEPTIONS: handling exception 0x17648b10 at 0x11175f
2017-04-02 14:17:20.281 myApp[6507:5048337] (
    0   CoreFoundation                      0x2245b933 <redacted> + 150
    1   libobjc.A.dylib                     0x21bf6e17 objc_exception_throw + 38
    2   CoreFoundation                      0x2245b861 <redacted> + 0
    3   PhotoLibrary                        0x2be83587 <redacted> + 186
    4   PhotoLibrary                        0x2be7f97f <redacted> + 1458
    5   PhotoLibrary                        0x2be9e897 <redacted> + 42
    6   UIKit                               0x269d6a1f <redacted> + 150
    7   UIKit                               0x26a94683 <redacted> + 38
    8   UIKit                               0x26a94575 <redacted> + 376
    9   UIKit                               0x26a93929 <redacted> + 96
    10  UIKit                               0x26a9355f <redacted> + 834
    11  UIKit                               0x26a6bbf1 <redacted> + 2048
    12  UIKit                               0x26d61485 <redacted> + 444
    13  UIKit                               0x26d437eb <redacted> + 114
    14  UIKit                               0x26a6b2db <redacted> + 370
    15  UIKit                               0x26faa5cd <redacted> + 112
    16  UIKit                               0x26faa1a3 <redacted> + 62
    17  UIKit                               0x269ef0e5 <redacted> + 568
    18  UIKit                               0x269eee87 <redacted> + 146
    19  UIKit                               0x26d2606d <redacted> + 1080
    20  UIKit                               0x26c7f4c9 <redacted> + 268
    21  UIKit                               0x26c8b7db <redacted> + 90
    22  UIKit                               0x269c9b1d <redacted> + 84
    23  CoreFoundation                      0x2241d6c9 <redacted> + 20
    24  CoreFoundation                      0x2241b9cd <redacted> + 280
    25  CoreFoundation                      0x2241bdff <redacted> + 958
    26  CoreFoundation                      0x2236b229 CFRunLoopRunSpecific + 520
    27  CoreFoundation                      0x2236b015 CFRunLoopRunInMode + 108
    28  GraphicsServices                    0x2395bac9 GSEventRunModal + 160
    29  UIKit                               0x26a3f189 UIApplicationMain + 144
    30  myApp                        0x0011173b main + 198
    31  libdyld.dylib                       0x22013873 <redacted> + 2
)
objc[6507]: EXCEPTIONS: finishing handler
objc[6507]: EXCEPTIONS: releasing completed exception 0x17648b30 (object 0x17648a90, a NSException)

任何想法?

1 个答案:

答案 0 :(得分:4)

以下是解决方案:

UIVideoEditorController *vec = [[UIVideoEditorController alloc] init];

    vec.delegate = self;
    vec.videoPath = filePath;
    vec.videoQuality = UIImagePickerControllerQualityTypeHigh;

    if ( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad ){
        vec.modalPresentationStyle = UIModalPresentationPopover;
        vec.popoverPresentationController.sourceView = vec.view;
    }

    NSLog(@"Editing video %@", filePath);

    if ( [UIVideoEditorController canEditVideoAtPath:filePath] )
    {
        [self presentViewController:vec animated:YES completion:nil];
    }
    else
    {
        NSLog( @"can't edit video at %@", filePath );
    }

编辑器需要在iPad上以popover形式呈现。否则你会收到错误。