国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > iOS > 正文

iOS使用原生AVCapture系列

2019-10-21 18:39:31
字體:
供稿:網(wǎng)友

概述:

可用于音頻、二維碼、拍照、錄制視頻 (均可自定義界面)

常見的輸出信號:

  • AVCaptureAudioDataOutput 音頻輸出
  • AVCaptureFileOutput 文本輸出
  • AVCaptureMetadataOutput 二維碼 條形碼…
  • AVCaptureStillImageOutput 拍照
  • AVCaptureMovieFileOutput 錄制視頻(不能實現(xiàn)暫停錄制和定義視頻文件類型)
  • AVCaptureVideoDataOutput + AVCaptureAudioDataOutput 錄制視頻的靈活性更強(qiáng)(能實現(xiàn)暫停錄制和定義視頻文件類型)

AVCaptureMovieFileOutput輸出流實現(xiàn)視頻錄制

初始化會話層

-(void)sessionConfiguration{  //初始化一個會話  session = [[AVCaptureSession alloc] init];  [session setSessionPreset:AVCaptureSessionPresetMedium];  //創(chuàng)建視頻設(shè)備  AVCaptureDevice *videoDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];  //根據(jù)設(shè)備創(chuàng)建輸入信號  deviceInput = [AVCaptureDeviceInput deviceInputWithDevice:videoDevice error:nil];  //添加 輸出設(shè)備 movieFile  self.deviceMovieFileOutput = [[AVCaptureMovieFileOutput alloc] init];  [session beginConfiguration];  //session添加設(shè)備輸入信號  if ([session canAddInput:deviceInput]) {    [session addInput:deviceInput];  }  //session添加設(shè)備輸出信號  if ([session canAddOutput:self.deviceMovieFileOutput]) {    [session addOutput:self.deviceMovieFileOutput];  }  [session commitConfiguration];}

創(chuàng)建預(yù)覽圖層

-(void)embedLayerWithView:(UIView *)view{  if (session == nil) {    return;  }  videoPreviewLayer = [AVCaptureVideoPreviewLayer layerWithSession:session];  //設(shè)置圖層的大小  videoPreviewLayer.frame = view.bounds;  videoPreviewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;  [view.layer addSublayer:videoPreviewLayer];  [session startRunning];}

錄制視頻

-(void)takePhoto:(NSURL *)fileURL{  [self.deviceMovieFileOutput startRecordingToOutputFileURL:fileURL recordingDelegate:self];}

結(jié)束錄制

-(UIImageView *)finishRecord:(UIView *)view isAnewRecording:(BOOL)anewRecording{  gifImageView = [[UIImageView alloc] initWithFrame:view.bounds];  [view addSubview:gifImageView];  isAnewRecording = anewRecording; //存儲是否重新錄制  //停止錄制(停止錄制后做代理方法)  [self.deviceMovieFileOutput stopRecording];  return gifImageView;}

拍攝視頻保存路徑

+(NSString *)getVideoSaveFilePath{  NSString*documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];  NSString *filePath = [documentPath stringByAppendingPathComponent:@"video.mp4"];  return filePath;}

會話層啟動和關(guān)閉

-(void)startCamera{  [session startRunning];}-(void)stopCamera{  [session stopRunning];}

代理方法

- (void)captureOutput:(AVCaptureFileOutput *)captureOutput didFinishRecordingToOutputFileAtURL:(NSURL *)outputFileURL fromConnections:(NSArray *)connections error:(NSError *)error{  NSLog(@"完成錄制");  NSLog(@"outputFileURL = %@",outputFileURL);  //**重新錄制**//  if (isAnewRecording) {    //**刪除視頻文件**//    NSFileManager *manager = [NSFileManager defaultManager];    [manager removeItemAtPath:outputFileURL.absoluteString error:nil];  }  //**不取消錄制**//  else{    //**獲取視頻時長**//    AVURLAsset *avUrl = [AVURLAsset URLAssetWithURL:outputFileURL options:nil];    CMTime time = [avUrl duration];    int seconds = ceil(time.value/time.timescale);    NSLog(@"seconds = %d",seconds);    if ([self.delegate respondsToSelector:@selector(videoDuration:)]) {      [self.delegate videoDuration:seconds];    }    if ([self.delegate respondsToSelector:@selector(playerVideo:)]) {      [self.delegate playerVideo:outputFileURL.absoluteString];    }  }}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識閱讀請移步到IOS開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 房产| 绵竹市| 佛冈县| 尚志市| 大城县| 安塞县| 乌鲁木齐县| 丹江口市| 东明县| 霍邱县| 永寿县| 南漳县| 康乐县| 铁岭县| 济宁市| 东乡| 贵溪市| 鲁甸县| 达州市| 开江县| 兴安盟| 松阳县| 武乡县| 阿克| 秦皇岛市| 新源县| 封丘县| 长治市| 进贤县| 天祝| 山东| 泗阳县| 靖西县| 阿图什市| 习水县| 疏勒县| 永寿县| 汪清县| 武穴市| 平乐县| 阳曲县|