音视频坑的解决方案 (OC)
作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS交流群:812157648,不管你是小白还是大牛欢迎入驻 ,分享BAT,阿里面试题、面试经验,讨论技术, 大家一起交流学习成长!
音视频坑的解决方案 (OC)
-
视频镜像问题
-
共享屏幕拉伸变形
-
视频回声噪音消除
-
视频源和通讯断开处理
-
视频屏幕拉伸处理
视频镜像问题解决
self.preView.track = self.mediaCapturer.videoTrack;
self.preView.videoView.transform = CGAffineTransformMakeScale(-1.0,1.0);
复制代码
共享屏幕拉伸变形 (IOS 和安卓)
造成拉伸的原因是采集视频的分辨率和帧数不统一
造成拉伸的原因是因为采集视频分辨率不统一 造成视频拉伸变形设置统一的分辨率和帧数
self.capture.captureSession.sessionPreset = [self.capture.captureSession canSetSessionPreset:AVCaptureSessionPreset640x480] ? AVCaptureSessionPreset640x480 : AVCaptureSessionPresetMedium;
[device lockForConfiguration:NULL];
@try {
//设置30帧
[device setActiveVideoMinFrameDuration:CMTimeMake(1, 30)];
[device setActiveVideoMaxFrameDuration:CMTimeMake(1, 30)];
} @catch (NSException *exception) {
NSLog(@"MediaIOS, 设备不支持所设置的分辨率,错误信息:%@",exception.description);
} @finally {
}
[device unlockForConfiguration];
复制代码
噪音消除
// 增加 4个约束 解决回声消除问题 answer内调用传空值
NSDictionary *mandatoryContraints = @{};
@"OfferToReceiveAudio" : @"true",
@"OfferToReceiveVideo" : @"true",
@"googNoiseSuppression": @"true",
@"googEchoCancellation": @"true"
return @{
@"OfferToReceiveAudio" : @"true",
@"OfferToReceiveVideo" : @"true",
@"googNoiseSuppression": @"true",
@"googEchoCancellation": @"true"
};
复制代码
App切换后台到主页视频断开重连 (处理socket 和视频源的)
appdelegate方法里面设置通知监听
- (void)applicationWillEnterForeground:(UIApplication *)application {
if(self.isback){
self.isback = false;
[[NSNotificationCenter defaultCenter]postNotificationName:@"Foreground" object:nil];
}
}
会议中开启视频源
- (void)collectionView:(UICollectionView *)collectionView didEndDisplayingCell:(UICollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath{
if (indexPath.row == 0) {
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
dispatch_async(dispatch_get_global_queue(0, 0), ^{
[_mediaCapturer startCapture];
});
});
}
}
原文作者:tiantian_cool
原文地址:https://juejin.cn/post/6919684897623769102