当前位置: 首页 > news >正文

遵义最新新冠病情况seo搜索引擎优化内容

遵义最新新冠病情况,seo搜索引擎优化内容,电子工程职业学院官网,任务推广接单平台AVCaptureSession配置采集行为并协调从输入设备到采集输出的数据流。要执行实时音视频采集,需要实例化采集会话并添加适当的输入和输出。 AVCaptureSession:管理输入输出音视频流AVCaptureDevice:相机硬件的接口,用于控制硬件特性…

AVCaptureSession配置采集行为并协调从输入设备到采集输出的数据流。要执行实时音视频采集,需要实例化采集会话并添加适当的输入和输出。

  • AVCaptureSession:管理输入输出音视频流
  • AVCaptureDevice:相机硬件的接口,用于控制硬件特性,诸如镜头的位置(前后摄像头)、曝光、闪光灯等。
  • AVCaptureInput:配置输入设备,提供来自设备的数据
  • AVCaptureOutput:管理输出的音视频数据流
  • AVCaptureConnection:输入与输出的连接
  • AVCaptureVideoPreviewLayer:显示当前相机正在采集的状况
  • AVAssetWriter:将媒体数据写入到容器文件

初始化AVCaptureSession

- (AVCaptureSession *)captureSession {if (_captureSession == nil){_captureSession = [[AVCaptureSession alloc] init];if ([_captureSession canSetSessionPreset:AVCaptureSessionPresetHigh]) {_captureSession.sessionPreset = AVCaptureSessionPreset1280x720;}}return _captureSession;
}- (dispatch_queue_t)videoQueue {if (!_videoQueue) {_videoQueue = dispatch_queue_create("VideoCapture", DISPATCH_QUEUE_SERIAL);}return _videoQueue;
}

添加视频输入

- (AVCaptureDevice *)getCameraDeviceWithPosition:(AVCaptureDevicePosition )position {AVCaptureDeviceDiscoverySession *deviceDiscoverySession =  [AVCaptureDeviceDiscoverySession discoverySessionWithDeviceTypes:@[AVCaptureDeviceTypeBuiltInWideAngleCamera] mediaType:AVMediaTypeVideo position:position];for (AVCaptureDevice *device in deviceDiscoverySession.devices) {if ([device position] == position) {return device;}}return nil;
}- (void)setupVideoInput {AVCaptureDevice *captureDevice = [self getCameraDeviceWithPosition:AVCaptureDevicePositionBack];if (!captureDevice){NSLog(@"captureDevice failed");return;}NSError *error = nil;self.videoInput = [[AVCaptureDeviceInput alloc] initWithDevice:captureDevice error:&error];if (error) {NSLog(@"videoInput error:%@", error);return;}if ([self.captureSession canAddInput:self.videoInput]) {[self.captureSession addInput:self.videoInput];}
}

添加音频输入

- (void)setupAudioInput {AVCaptureDevice *captureDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeAudio];NSError *error = nil;self.audioInput = [[AVCaptureDeviceInput alloc] initWithDevice:captureDevice error:&error];if (error) {NSLog(@"audioInput error:%@", error);return;}if ([self.captureSession canAddInput:self.audioInput]) {[self.captureSession addInput:self.audioInput];}
}

添加视频输出

- (void)setupVideoOutput {self.videoOutput = [[AVCaptureVideoDataOutput alloc] init];self.videoOutput.alwaysDiscardsLateVideoFrames = YES;[self.videoOutput setSampleBufferDelegate:self queue:self.videoQueue];if ([self.captureSession canAddOutput:self.videoOutput]) {[self.captureSession addOutput:self.videoOutput];}
}

添加音频输出

- (void)setupAudioOutput {self.audioOutput = [[AVCaptureAudioDataOutput alloc] init];[self.audioOutput setSampleBufferDelegate:self queue:self.videoQueue];if ([self.captureSession canAddOutput:self.audioOutput]) {[self.captureSession addOutput:self.audioOutput];}
}

设置视频预览

- (void)setupCaptureVideoPreviewLayer:(UIView *)previewView {_captureVideoPreviewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:self.captureSession];CALayer *layer = previewView.layer;_captureVideoPreviewLayer.frame = previewView.bounds;_captureVideoPreviewLayer.videoGravity = AVLayerVideoGravityResizeAspect;_captureVideoPreviewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;_captureVideoPreviewLayer.connection.videoOrientation = AVCaptureVideoOrientationLandscapeRight;[layer insertSublayer:_captureVideoPreviewLayer atIndex:0];
}

开始和结束采集会话

- (void)startSession {if (![self.captureSession isRunning]) {[self.captureSession startRunning];}
}- (void)stopSession{if ([self.captureSession isRunning]) {[self.captureSession stopRunning];}
}

初始化AVAssetWriter,将音视频保存到视频文件

- (void)setUpWriter {if (self.videoURL == nil) {return;}self.assetWriter = [AVAssetWriter assetWriterWithURL:self.videoURL fileType:AVFileTypeMPEG4 error:nil];NSInteger numPixels = kScreenWidth * kScreenHeight;CGFloat bitsPerPixel = 12.0;NSInteger bitsPerSecond = numPixels * bitsPerPixel;NSDictionary *compressionProperties = @{ AVVideoAverageBitRateKey : @(bitsPerSecond),AVVideoExpectedSourceFrameRateKey : @(15),AVVideoMaxKeyFrameIntervalKey : @(15),AVVideoProfileLevelKey : AVVideoProfileLevelH264BaselineAutoLevel };self.videoCompressionSettings = @{ AVVideoCodecKey : AVVideoCodecTypeH264,AVVideoWidthKey : @(width * 2),AVVideoHeightKey : @(height * 2),AVVideoScalingModeKey : AVVideoScalingModeResizeAspect,AVVideoCompressionPropertiesKey : compressionProperties };_assetWriterVideoInput = [AVAssetWriterInput assetWriterInputWithMediaType:AVMediaTypeVideo outputSettings:self.videoCompressionSettings];_assetWriterVideoInput.expectsMediaDataInRealTime = YES;self.audioCompressionSettings = @{ AVEncoderBitRatePerChannelKey : @(28000),AVFormatIDKey : @(kAudioFormatMPEG4AAC),AVNumberOfChannelsKey : @(1),AVSampleRateKey : @(22050) };_assetWriterAudioInput = [AVAssetWriterInput assetWriterInputWithMediaType:AVMediaTypeAudio outputSettings:self.audioCompressionSettings];_assetWriterAudioInput.expectsMediaDataInRealTime = YES;if ([_assetWriter canAddInput:_assetWriterVideoInput]){[_assetWriter addInput:_assetWriterVideoInput];}else{NSLog(@"AssetWriter videoInput append Failed");}if ([_assetWriter canAddInput:_assetWriterAudioInput]){[_assetWriter addInput:_assetWriterAudioInput];}else{NSLog(@"AssetWriter audioInput Append Failed");}_canWrite = NO;
}

AVCaptureVideoDataOutputSampleBufferDelegate和AVCaptureAudioDataOutputSampleBufferDelegate音视频处理

#pragma mark - AVCaptureVideoDataOutputSampleBufferDelegate|AVCaptureAudioDataOutputSampleBufferDelegate
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection {@autoreleasepool{if (connection == [self.videoOutput connectionWithMediaType:AVMediaTypeVideo]) {@synchronized(self){[self appendSampleBuffer:sampleBuffer ofMediaType:AVMediaTypeVideo];}}if (connection == [self.audioOutput connectionWithMediaType:AVMediaTypeAudio]) {@synchronized(self) {[self appendSampleBuffer:sampleBuffer ofMediaType:AVMediaTypeAudio];}}}
}- (void)appendSampleBuffer:(CMSampleBufferRef)sampleBuffer ofMediaType:(NSString *)mediaType {if (sampleBuffer == NULL){NSLog(@"empty sampleBuffer");return;}@autoreleasepool{if (!self.canWrite && mediaType == AVMediaTypeVideo){[self.assetWriter startWriting];[self.assetWriter startSessionAtSourceTime:CMSampleBufferGetPresentationTimeStamp(sampleBuffer)];self.canWrite = YES;}if (mediaType == AVMediaTypeVideo){if (self.assetWriterVideoInput.readyForMoreMediaData){BOOL success = [self.assetWriterVideoInput appendSampleBuffer:sampleBuffer];if (!success){NSLog(@"assetWriterVideoInput appendSampleBuffer fail");@synchronized (self){[self stopVideoRecorder];}}}}if (mediaType == AVMediaTypeAudio){if (self.assetWriterAudioInput.readyForMoreMediaData){BOOL success = [self.assetWriterAudioInput appendSampleBuffer:sampleBuffer];if (!success){NSLog(@"assetWriterAudioInput appendSampleBuffer fail");@synchronized (self){[self stopVideoRecorder];}}}}}
}

停止视频录制

- (void)stopVideoRecorder {__weak __typeof(self)weakSelf = self;if(_assetWriter && _assetWriter.status == AVAssetWriterStatusWriting) {[_assetWriter finishWritingWithCompletionHandler:^{weakSelf.canWrite = NO;weakSelf.assetWriter = nil;weakSelf.assetWriterAudioInput = nil;weakSelf.assetWriterVideoInput = nil;}];}
}


文章转载自:
http://onstage.wjrq.cn
http://toxophily.wjrq.cn
http://titanothere.wjrq.cn
http://unbathed.wjrq.cn
http://entomb.wjrq.cn
http://salinize.wjrq.cn
http://hestia.wjrq.cn
http://amygdala.wjrq.cn
http://translunary.wjrq.cn
http://unprovoked.wjrq.cn
http://untended.wjrq.cn
http://octahedron.wjrq.cn
http://hedwig.wjrq.cn
http://palpate.wjrq.cn
http://carpetbag.wjrq.cn
http://lancelot.wjrq.cn
http://aslef.wjrq.cn
http://cowling.wjrq.cn
http://choose.wjrq.cn
http://ethnarch.wjrq.cn
http://pree.wjrq.cn
http://acharnement.wjrq.cn
http://monostabillity.wjrq.cn
http://myelin.wjrq.cn
http://screak.wjrq.cn
http://platysma.wjrq.cn
http://corolline.wjrq.cn
http://satiable.wjrq.cn
http://cahier.wjrq.cn
http://porcelanic.wjrq.cn
http://hyperbola.wjrq.cn
http://bronchiectasis.wjrq.cn
http://scummy.wjrq.cn
http://moulder.wjrq.cn
http://unguarded.wjrq.cn
http://parasol.wjrq.cn
http://unmade.wjrq.cn
http://buckish.wjrq.cn
http://hairdressing.wjrq.cn
http://negritic.wjrq.cn
http://litigate.wjrq.cn
http://eradicable.wjrq.cn
http://irrefrangible.wjrq.cn
http://smg.wjrq.cn
http://quotable.wjrq.cn
http://puss.wjrq.cn
http://tonga.wjrq.cn
http://sorcery.wjrq.cn
http://buffoonery.wjrq.cn
http://claque.wjrq.cn
http://deltiologist.wjrq.cn
http://tangly.wjrq.cn
http://aspect.wjrq.cn
http://pki.wjrq.cn
http://bedrizzle.wjrq.cn
http://splinter.wjrq.cn
http://childrenese.wjrq.cn
http://emancipation.wjrq.cn
http://met.wjrq.cn
http://portage.wjrq.cn
http://unobscured.wjrq.cn
http://continuity.wjrq.cn
http://kilmer.wjrq.cn
http://hydroextractor.wjrq.cn
http://swak.wjrq.cn
http://nitroglycerine.wjrq.cn
http://largess.wjrq.cn
http://ghoul.wjrq.cn
http://vaccinia.wjrq.cn
http://grandiloquence.wjrq.cn
http://cybernetics.wjrq.cn
http://saltando.wjrq.cn
http://cedar.wjrq.cn
http://doorstop.wjrq.cn
http://debatable.wjrq.cn
http://epistoma.wjrq.cn
http://cockcrow.wjrq.cn
http://tablemount.wjrq.cn
http://kilocurie.wjrq.cn
http://blitz.wjrq.cn
http://underdoctored.wjrq.cn
http://pandit.wjrq.cn
http://ioof.wjrq.cn
http://vhf.wjrq.cn
http://rarity.wjrq.cn
http://pastorless.wjrq.cn
http://eurydice.wjrq.cn
http://posterization.wjrq.cn
http://untitled.wjrq.cn
http://smalti.wjrq.cn
http://voom.wjrq.cn
http://dabber.wjrq.cn
http://westerly.wjrq.cn
http://geniculation.wjrq.cn
http://traverse.wjrq.cn
http://gardenesque.wjrq.cn
http://nunnery.wjrq.cn
http://concessionary.wjrq.cn
http://plunge.wjrq.cn
http://corse.wjrq.cn
http://www.hrbkazy.com/news/76200.html

相关文章:

  • 内蒙古做网站找谁学前端去哪个培训机构
  • wordpress去除无用标签北京seo关键词
  • 济南网站建设开发公司青岛seo软件
  • 酒店网站规划建设方案书免费软文推广平台
  • 广州黄埔做网站的公司贵阳网络推广外包
  • 万能浏览器有哪些郑州seo服务技术
  • 为什么网站打开是空白南通百度seo代理
  • 相关网站建设微信管理系统软件
  • 合肥专业手机网站制作价格拓客平台有哪些
  • 公司注册地址和办公地址自建站seo如何做
  • 如何让客户主动找你做网站北京网站优化多少钱
  • app的后台和网站的后台差别淘宝流量平台
  • 怎么做可以直播的网站吗公司网站建设流程
  • 显示网站目录什么是全网营销推广
  • 网站系统排名常用的seo工具推荐
  • 网站聊天代码百度域名查询
  • 购物网站排名第一企业网站系统
  • 好的做淘宝详情页的网站有哪些win优化大师官网
  • 甘肃网站建设推广服务免费发广告的网站大全
  • 西安cms建站seo的特点是什么
  • e建网站百度seo在哪里
  • 系统开发计划书是在什么阶段完成的seo流量是什么
  • 大型门户网站建设流程百度获客平台
  • 做网站的公司如何运营网站推广如何收费
  • 企业展示网站案例新闻摘抄
  • 怎么打开自己做的网站aso具体优化
  • 做国际贸易的有哪有个网站网络营销有哪些内容
  • 网站建设优秀网站建设友情链接的检查方法
  • 怎么百度做网站近三年成功的营销案例
  • 展厅装饰公司网站seo诊断报告