美文网首页iOS Process
iOS-视频录制库、

iOS-视频录制库、

作者: Stark_Dylan | 来源:发表于2015-05-06 12:55 被阅读519次

    既然有了播放在线视频, 那么我们也把录制加进来吧。

    GitHub Page

    首先初始化我们的视频录制器, 并添加到View

        self.captureManager = [[AVCaptureManager alloc] initWithPreviewView:self.view];
        self.captureManager.delegate = self;
    

    设置代理并写代理方法

    #pragma mark - AVCaptureManagerDeleagte
    
    - (void)didFinishRecordingToOutputFileAtURL:(NSURL *)outputFileURL error:(NSError *)error {
        
        if (error) {
            NSLog(@"error:%@", error);
            return;
        }
        
        if (!isNeededToSave) {
            return;
        }
        
        [self saveRecordedFile:outputFileURL];
    }
    

    开始录制 结束录制

    [self.captureManager startRecording];
    [self.captureManager stopRecording];

    保存录制后的视频 - 写到代理方法里的

    - (void)saveRecordedFile:(NSURL *)recordedFile {
        
        [SVProgressHUD showWithStatus:@"Saving..."
                             maskType:SVProgressHUDMaskTypeGradient];
        
        dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
        dispatch_async(queue, ^{
            
            ALAssetsLibrary *assetLibrary = [[ALAssetsLibrary alloc] init];
            [assetLibrary writeVideoAtPathToSavedPhotosAlbum:recordedFile
                                             completionBlock:
             ^(NSURL *assetURL, NSError *error) {
                 
                 dispatch_async(dispatch_get_main_queue(), ^{
                     
                     [SVProgressHUD dismiss];
                     
                     NSString *title;
                     NSString *message;
                     
                     if (error != nil) {
                         
                         title = @"Failed to save video";
                         message = [error localizedDescription];
                     }
                     else {
                         title = @"Saved!";
                         message = nil;
                     }
                     
                     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title
                                                                     message:message
                                                                    delegate:nil
                                                           cancelButtonTitle:@"OK"
                                                           otherButtonTitles:nil];
                     [alert show];
                 });
             }];
        });
    }
    
    

    .h文件

    @property (nonatomic, assign) id<AVCaptureManagerDelegate> delegate;
    @property (nonatomic, readonly) BOOL isRecording;
    
    - (id)initWithPreviewView:(UIView *)previewView;
    - (void)toggleContentsGravity;
    - (void)resetFormat;
    - (void)switchFormatWithDesiredFPS:(CGFloat)desiredFPS;
    - (void)startRecording;
    - (void)stopRecording;
    

    相关文章

      网友评论

      • puppySweet:iOS上内置相机应用录制的mov/mp4视频竖屏拍照的时候产生一个Rotation元数据,表示录制视频时摄像头旋转到了多少角度。其值一般为这四个:0、90、180或270。类似于图片文件的Exif信息中的Orientation元数据。

        Rotation元数据用于播放器确定渲染视频的方向,但有的播放器会对其视而不见。 我竖屏用avaasertWriter录制视频 所以我现在 Rotation 是90度 但是 windows下 有些网站播放器播放时 会倒转90 度 因为有些windows下 的播放 不认得 Rotation这个属性 怎么办 不会自动旋转90自适应 苹果安卓手机播放一点事都没有 火狐浏览器的播放器也没问题



        网上的案例旋转回90度的方法不是用avassertWriter 录制视频

        而是avcapturefileouDAtavideo录视频 再用AVMutableVideoComposition 旋转 exprotSession等旋转后压缩倒出的 这导致 我用avassertWriter设置的比特流 帧绿 还有一些属性全变了

        怎么办怎么办
        puppySweet:不是我强制啊 iPhone 自带就是这样啊 你试试竖屏拍照就知道啦
        Stark_Dylan:@puppySweet 你这样强制的旋转 在手机上不是倒过来了么
        Stark_Dylan:@puppySweet 抱歉我不是特别了解windows下关于播放器方向的问题。浏览器的兼容问题各有不一。 您的windows下的浏览器是IE?
      • 小凡凡520:mark 一下
        Stark_Dylan:@小凡凡520 来你联系方式私信我

      本文标题:iOS-视频录制库、

      本文链接:https://www.haomeiwen.com/subject/avvifttx.html