LFLiveKit如何推1080p流

说在最前面!

感谢开源!!!

做过直播的朋友们肯定不会不熟悉来疯的这个开源框架 LFLiveKit

通过它我们可以通过简单的几行代码就能进行高清的视频直播推流。如果自己写我觉得我得改行了。

不过。。。我们老板要求手机能直播1080p 🤷‍♂️。。

好吧 那就翻代码呗
先找到这个文件LFLiveVideoConfiguration
有关视频推送配置都在这个文件中

先在LFLiveVideoConfiguration.h文件中加个枚举值方便后面调用

  • 视频分辨率枚举 主要加了LFCaptureSessionPreset1080x1920 这个枚举
/// 视频分辨率(都是16:9 当此设备不支持当前分辨率,自动降低一级)
typedef NS_ENUM (NSUInteger, LFLiveVideoSessionPreset){
    /// 低分辨率
    LFCaptureSessionPreset360x640 = 0,
    /// 中分辨率
    LFCaptureSessionPreset540x960 = 1,
    /// 高分辨率
    LFCaptureSessionPreset720x1280 = 2,
    /// 1080p分辨率
    LFCaptureSessionPreset1080x1920 = 3,
    // 4 : 3
    LFCaotureSessionPreset480x640 = 4,
};
  • 视频分辨率详细配置枚举 加了这个枚举LFLiveVideoQuality_High4
/// 视频质量
typedef NS_ENUM (NSUInteger, LFLiveVideoQuality){
    /// 分辨率: 360 *640 帧数:15 码率:500Kps
    LFLiveVideoQuality_Low1 = 0,
    /// 分辨率: 360 *640 帧数:24 码率:800Kps
    LFLiveVideoQuality_Low2 = 1,
    /// 分辨率: 360 *640 帧数:30 码率:800Kps
    LFLiveVideoQuality_Low3 = 2,
    /// 分辨率: 540 *960 帧数:15 码率:800Kps
    LFLiveVideoQuality_Medium1 = 3,
    /// 分辨率: 540 *960 帧数:24 码率:800Kps
    LFLiveVideoQuality_Medium2 = 4,
    /// 分辨率: 540 *960 帧数:30 码率:800Kps
    LFLiveVideoQuality_Medium3 = 5,
    /// 分辨率: 720 *1280 帧数:15 码率:1000Kps
    LFLiveVideoQuality_High1 = 6,
    /// 分辨率: 720 *1280 帧数:24 码率:1200Kps
    LFLiveVideoQuality_High2 = 7,
    /// 分辨率: 720 *1280 帧数:30 码率:1200Kps
    LFLiveVideoQuality_High3 = 8,
    /// 分辨率: 1080 * 1920 帧数:24 码率:1200Kps
    LFLiveVideoQuality_High4 = 9,
    /// 分辨率: 480 * 640 4 : 3
    LFLiveVideoQuality_Medium4 = 10,
    /// 默认配置
    LFLiveVideoQuality_Default = LFLiveVideoQuality_Low2
};

在LFLiveVideoConfiguration.m 中 修改代码

先到方法 + (instancetype)defaultConfigurationForQuality:(LFLiveVideoQuality)videoQuality outputImageOrientation:(UIInterfaceOrientation)outputImageOrientation;
中加入 LFLiveVideoQuality_High4 这个枚举的case

case LFLiveVideoQuality_High4: {
        configuration.sessionPreset = LFCaptureSessionPreset1080x1920;// 增加
        configuration.videoFrameRate = 24;//帧数 越高越流畅 打过fps游戏的都懂
        configuration.videoMaxFrameRate = 24;
        configuration.videoMinFrameRate = 15;
        configuration.videoBitRate = 1400 * 1000; //bit率越高越清晰 为了手机不是特别烫 我这设的不是很高
        configuration.videoMaxBitRate = 2160 * 1000;
        configuration.videoMinBitRate = 500 * 1000;
        configuration.videoSize = CGSizeMake(1080, 1920);// size 这里决定输出时视频尺寸的大小
    }
        break;

接着设置一下手机的采集率
在这个方法中- (NSString *)avSessionPreset
增加case

case LFCaptureSessionPreset1080x1920:{////
        avSessionPreset = AVCaptureSessionPreset1920x1080;
    }
    break;

其他还需要修改以下方法

#pragma mark -- Custom Method
- (LFLiveVideoSessionPreset)supportSessionPreset:(LFLiveVideoSessionPreset)sessionPreset {
    AVCaptureSession *session = [[AVCaptureSession alloc] init];
    AVCaptureDevice *inputCamera;
    NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];
    for (AVCaptureDevice *device in devices){
        if ([device position] == AVCaptureDevicePositionFront){
            inputCamera = device;
        }
    }
    AVCaptureDeviceInput *videoInput = [[AVCaptureDeviceInput alloc] initWithDevice:inputCamera error:nil];
    if ([session canAddInput:videoInput]){
        [session addInput:videoInput];
    }
    if (![session canSetSessionPreset:self.avSessionPreset]) {
        if (sessionPreset == LFCaptureSessionPreset1080x1920) { //====增加
            sessionPreset = LFCaptureSessionPreset720x1280; //====增加
        } else if (sessionPreset == LFCaptureSessionPreset720x1280) {
            sessionPreset = LFCaptureSessionPreset540x960;
            if (![session canSetSessionPreset:self.avSessionPreset]) {
                sessionPreset = LFCaptureSessionPreset360x640;
            }
        } else if (sessionPreset == LFCaptureSessionPreset540x960) {
            sessionPreset = LFCaptureSessionPreset360x640;
        } else {
            sessionPreset = LFCaotureSessionPreset480x640;
        }
    }
    return sessionPreset;
}
- (CGSize)captureOutVideoSize{
    CGSize videoSize = CGSizeZero;
    switch (_sessionPreset) {
        case LFCaptureSessionPreset360x640:{
            videoSize = CGSizeMake(360, 640);
        }
            break;
        case LFCaptureSessionPreset540x960:{
            videoSize = CGSizeMake(540, 960);
        }
            break;
        case LFCaptureSessionPreset720x1280:{
            videoSize = CGSizeMake(720, 1280);
        }
            break;
        case LFCaptureSessionPreset1080x1920: { // ====增加
            videoSize = CGSizeMake(1080, 1920);
        }
            break;
        case LFCaotureSessionPreset480x640: {
            videoSize = CGSizeMake(640, 480);
        }
            break;
        default:{
            videoSize = CGSizeMake(360, 640);
        }
            break;
    }
    if (self.landscape){
        return CGSizeMake(videoSize.height, videoSize.width);
    }
    return videoSize;
}

需要获取具体LFLiveVideoConfiguration文件移步 项目地址

具体路径在 一些第三方的使用⁩ ▸ ⁨一些第三方的使用⁩ ▸ ⁨Tool⁩ ▸ ⁨Resource⁩ ▸ ⁨LFLiveKit⁩ ▸ configuration

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,204评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,091评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,548评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,657评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,689评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,554评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,302评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,216评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,661评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,851评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,977评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,697评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,306评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,898评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,019评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,138评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,927评论 2 355

推荐阅读更多精彩内容