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

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

iOS使用原生AVCapture系列

2020-07-26 02:23:06
字體:
供稿:網(wǎng)友

概述:

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

常見的輸出信號:

  • AVCaptureAudioDataOutput 音頻輸出
  • AVCaptureFileOutput 文本輸出
  • AVCaptureMetadataOutput 二維碼 條形碼…
  • AVCaptureStillImageOutput 拍照
  • AVCaptureMovieFileOutput 錄制視頻(不能實現(xiàn)暫停錄制和定義視頻文件類型)
  • AVCaptureVideoDataOutput + AVCaptureAudioDataOutput 錄制視頻的靈活性更強(能實現(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í)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 拉萨市| 阳西县| 花垣县| 西吉县| 监利县| 东乌珠穆沁旗| 滨州市| 曲阜市| 大洼县| 华蓥市| 常州市| 仙桃市| 开远市| 合阳县| 杂多县| 阿坝县| 呼图壁县| 商都县| 荔波县| 宁津县| 榆树市| 常德市| 临西县| 资兴市| 雷波县| 小金县| 广安市| 青神县| 越西县| 南昌市| 郧西县| 溧阳市| 龙里县| 静安区| 抚州市| 兴安盟| 襄垣县| 平邑县| 灌云县| 衡阳县| 虹口区|