ios直播技术(4)-- 视频渲染

IOS视频渲染相对编解码要简单一些,系统也提供了GLKView,当然我们也可以自定义实现。这里我就分享下自己实现的一点经验。

自定义的renderframe

#import <UIKit/UIKit.h>
@class AVCaptureVideoPreviewLayer;
class I420VideoFrame;
@interface VideoRenderFrame : UIView
@property (nonatomic, strong) AVCaptureVideoPreviewLayer *prevLayer;
- (id)initWithParent:(UIView*)parent Preview:(AVCaptureVideoPreviewLayer*)prev;
- (void)setScalingType:(int)scalingType;
- (void)pause;
- (void)resume;
- (void)rawFrameComes:(I420VideoFrame*)raw;
@end

视频渲染又分为本地和远端的,首先来说下本地视频渲染。

ios系统提供了本地视频预览层 AVCaptureVideoPreviewLayer,我们只需要在采集视频时  将其创建出来。

prelayer = [AVCaptureVideoPreviewLayer layerWithSession:_captureSession];
renderframe = [[VideoRenderFrame alloc] initWithParent:parentView Preview:prelayer];

这里的parentView是用户调用playvideo时传入的view,然后在将AVCaptureVideoPreviewLayer添加到 VideoRenderFrame的layer中。

- (id)initWithParent:(UIView*)view Preview:(AVCaptureVideoPreviewLayer*)prev
{
    self = [super initWithFrame:view.bounds];
    if (self) {
        
        self.backgroundColor = [UIColor blackColor];
        self.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
        self.clipsToBounds = YES;
        [view addSubview:self];
        [view setAutoresizesSubviews:YES];
        
        _lock = [[NSLock alloc] init];
        
        if
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值