Skip to content

customOutputSize

sunjian283019 edited this page Oct 20, 2016 · 41 revisions

分辨率进阶设定

1. 目的

预览分辨率和编码推流分辨率可以不一致,这时候,较高的预览分辨率可以让主播预览时画质更清晰。

2. 使用说明

设置较高的采集分辨率,该分辨率图像将用于预览。 kit类的capPreset属性可配置取值,请参考:Video Input Presets 一览表

  • API介绍
/**
 @abstract   预览分辨率 (仅在开始采集前设置有效)
 @discussion 内部始终将较大的值作为宽度 (若需要竖屏,请设置 videoOrientation)
 @discussion 宽高都会向上取整为4的整数倍
 @discussion 有效范围: 宽度[160, 1920] 高度[ 90,  1080], 超出范围会取边界有效值
 @discussion 当预览分辨率与采集分辨率不一致时:
  若宽高比不同, 先进行裁剪, 再进行缩放
  若宽高比相同, 直接进行缩放
 @discussion 默认值为(640, 360)
 */
@property (nonatomic, assign)   CGSize previewDimension;

/**
 @abstract   用户定义的视频 **推流** 分辨率
 @discussion 有效范围: 宽度[160, 1280] 高度[ 90,  720], 超出范围会取边界有效值
 @discussion 其他与previewDimension限定一致,
 @discussion 当与previewDimension不一致时, 仅仅进行缩放
 @discussion 默认值为(640, 360)
 @see previewDimension
 */
@property (nonatomic, assign)   CGSize streamDimension;
  • 设置采集分辨率
设置预览分辨率
_kit.previewDimension = [self.presetCfgView capResolutionSize];
//采集分辨率
- (CGSize) capResolutionSize {
    NSInteger idx = _resolutionUI.selectedSegmentIndex;//_resolutionUI指的是上图中的采集分辨率分段控制器
    return [self dimensionToSize:idx];
}
//分辨率
- (CGSize) dimensionToSize:(NSInteger)idx {
    switch (idx) {
        case 0:
            return  CGSizeMake(640, 360);
        case 1:
            return  CGSizeMake(960, 540);
        case 2:
            return  CGSizeMake(1280, 720);
        case 3:
            return  CGSizeMake(640, 480);
        default:
            return  CGSizeMake(640, 360);
    }
}
  • 设置推流分辨率
//设置推流分辨率
_kit.streamDimension  = [self.presetCfgView strResolutionSize];
//推流分辨率
- (CGSize) strResolutionSize {
    NSInteger idx = _streamResoUI.selectedSegmentIndex;
    return [self dimensionToSize:idx];
}
- (CGSize) dimensionToSize:(NSInteger)idx {
    switch (idx) {
        case 0:
            return  CGSizeMake(640, 360);
        case 1:
            return  CGSizeMake(960, 540);
        case 2:
            return  CGSizeMake(1280, 720);
        case 3:
            return  CGSizeMake(640, 480);
        default:
            return  CGSizeMake(640, 360);
    }
}
#### 3. demo示例
preview的viewSize设置为(200*200)
推流分辨率:(200*200)
推流分辨率:(200*200)
_preview.frame = CGRectMake(0, 100, 200, 200);
_kit.previewDimension = CGSizeMake(200, 200);
_kit.streamDimension  = CGSizeMake(200, 200);
推流端 播放端
streamer player

1. 推流环节说明

2. 特色功能说明

2.1 采集

2.2 音频处理

2.3 视频处理

2.4 编码

2.5 推流

2.6 输入多样化

2.7 集成

3. 第三方功能

4. 技术专栏

5. 已知问题

8. FAQ

金山云计算

Clone this wiki locally