如何使用VideoCore创建编码会话?

时间:2015-11-05 01:36:30

标签: ios objective-c videocore

我正在将VideoCore RTMP编码器集成到我的应用中,但是我无法启动新的编码会话。我看到了VCSimpleSession类,但是如何启动编码器并查看输出?

VCSimpleSession *mySession = [[VCSimpleSession alloc] init];

我没有看到预览视图。我做错了什么?

1 个答案:

答案 0 :(得分:1)

VideoCore使用简单和复杂的图形。 VCSimpleSession是设置编码器的最简单方法。

VCSimpleSession有几种不同的初始值设定项:

- (instancetype) initWithVideoSize:(CGSize)videoSize
                         frameRate:(int)fps
                           bitrate:(int)bps;

// -----------------------------------------------------------------------------
- (instancetype) initWithVideoSize:(CGSize)videoSize
                         frameRate:(int)fps
                           bitrate:(int)bps
           useInterfaceOrientation:(BOOL)useInterfaceOrientation;

// -----------------------------------------------------------------------------
- (instancetype) initWithVideoSize:(CGSize)videoSize
                         frameRate:(int)fps
                           bitrate:(int)bps
           useInterfaceOrientation:(BOOL)useInterfaceOrientation
                       cameraState:(VCCameraState) cameraState;

// -----------------------------------------------------------------------------
- (instancetype) initWithVideoSize:(CGSize)videoSize
                         frameRate:(int)fps
                           bitrate:(int)bps
           useInterfaceOrientation:(BOOL)useInterfaceOrientation
                       cameraState:(VCCameraState) cameraState
                        aspectMode:(VCAspectMode) aspectMode;

videoSize是您编码视频的理想分辨率。

fps是视频帧率。根据您的服务器设置,如果您的服务器支持,您可能希望将其设置为30,甚至可能为60。

bps是视频比特率,以每秒位数为单位。

useInterfaceOrientation用于通知编码器设备方向更改。传入YES会告诉编码器在旋转设备时旋转视频。

cameraState用于使用所需的相机源启动编码器。 VCCameraState枚举有两个值:VCCameraStateFrontVCCameraStateBack

aspectMode用于设置预览视图的宽高比模式。 VCAspectMode有两个值:VCAspectModeFit(您的会话视频预览应该"方面适合"进入其父视图,以及VCAscpectModeFill(缩放视频预览以填充其父视图)。

使用其中一个初始化程序创建新会话。确保在初始化后将会话保留为属性或ivar。初始化后,将会话的previewView属性作为子视图添加到视图控制器上的某些UIView

要连接到服务器,请在会话中使用startRtmpSessionWithURL:方法。要停止编码器,请拨打endRtmpSession

您的完整设置可能如下所示:

@property (weak, nonatomic) IBOutlet UIView *previewView; // This is a UIView on your view controller
@property (weak, nonatomic) VCSimpleSession* session;

// ...

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.session = [[VCSimpleSession alloc] initWithVideoSize:CGSizeMake(1280, 720) frameRate:30 bitrate:1000000 useInterfaceOrientation:NO];

    [self.previewView addSubview:_session.previewView];
    [self.previewView bringSubviewToFront:self.session.previewView]
    [_session startRtmpSessionWithURL:@"rtmp://192.168.1.151/live" andStreamKey:@"myStream"];
}

当你完成时:

[self.session endRtmpSession];

我已经在VideoCore示例应用上完成了一些工作,您应该查看sample view controller