Захват видео и отправить это видео в MFMailComposer в iphone - PullRequest
0 голосов
/ 01 июня 2011

В моем приложении я написал этот код для захвата видео

  -(IBAction)takeVideo:(id)sender {

        [self startCameraControllerFromViewController: self

                                        usingDelegate: self]; 
}

    - (BOOL) startCameraControllerFromViewController: (UIViewController*) controller usingDelegate: (id <UIImagePickerControllerDelegate, UINavigationControllerDelegate>) delegate {

        if (([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera] == NO) || (delegate == nil) || (controller == nil))

            return NO;

        cameraUI = [[UIImagePickerController alloc] init];

        cameraUI.sourceType = UIImagePickerControllerSourceTypeCamera;

        // Displays a control that allows the user to choose picture or

        // movie capture, if both are available:

        cameraUI.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypeCamera];

        // Hides the controls for moving & scaling pictures, or for

        // trimming movies. To instead show the controls, use YES.

        cameraUI.allowsEditing = NO;
        cameraUI.delegate = delegate;

        [controller presentModalViewController: cameraUI animated: YES];

        return YES;      }


    - (void) imagePickerControllerDidCancel: (UIImagePickerController *) picker {

        [[picker parentViewController] dismissModalViewControllerAnimated: YES];

        [picker release];   
 }

    - (void) imagePickerController: (UIImagePickerController *) picker didFinishPickingMediaWithInfo: (NSDictionary *) info {


        // Handle a movie capture       cameraUI.mediaTypes = [[NSArray alloc] initWithObjects: (NSString *) kUTTypeMovie, nil];    NSString
    *mediaType = [info objectForKey: UIImagePickerControllerMediaType];
        if (CFStringCompare ((CFStringRef) mediaType, kUTTypeMovie, 0) == kCFCompareEqualTo) {



            NSString *moviePath = [[info objectForKey: UIImagePickerControllerMediaURL] path];

            if (UIVideoAtPathIsCompatibleWithSavedPhotosAlbum (moviePath)) {

                     UISaveVideoAtPathToSavedPhotosAlbum (moviePath, nil, nil, nil);
            }
        }
        [[picker parentViewController] dismissModalViewControllerAnimated: YES];
        [picker release];   
 }

скомпилируйте и запустите этот код, его работающий и после съемки видео я нажал кнопку «Сохранить», чтобы сохранить видео, затем приложение зависало и отображало сообщение «EXC_BAD_ACCESS» на терминале

Итак, пожалуйста, помогите мне, как решить эту ошибку

1 Ответ

1 голос
/ 01 июня 2011

В iOS 4 или более поздней версии вы можете использовать экземпляр UIImagePickerController для захвата видео. Это довольно удобный уровень, поэтому степень, в которой вы можете управлять захватом, а затем манипулировать захваченным видео, ограничена. Возможно, вам придется прибегнуть к API более низкого уровня, доступным в AV Foundation.

Получив видеоданные, вы сможете прикрепить их к составленному электронному письму в виде прикрепленного файла MIME. Вам просто нужно видео в объекте NSData и необходимо указать тип MIME для вложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...