Skyway iOS - 调整远程视频帧

3
我已经在我的iOS应用程序中集成了SkyWay SDK (https://webrtc.ecl.ntt.com/en/),以实现视频会议。我的问题是 - 我无法调整远程视频流帧以实现全屏流媒体?当我调整rcRemote的CGRect时,视频覆盖在此视图上的叠加层不会调整大小,当我更改maxWidth和maxHeight约束时,框架不会改变。是否有任何方法根据您的要求自定义远程视频流帧?
[SKWNavigator initialize:_peer];

SKWMediaConstraints* constraints = [[SKWMediaConstraints alloc] init];
constraints.maxWidth = 960;
constraints.maxHeight = 540;
constraints.cameraPosition = SKW_CAMERA_POSITION_FRONT;

_msLocal = [SKWNavigator getUserMedia:constraints]; 
//////////////////// END: Get Local Stream   /////////////////////////

// Initialize views
if ((nil != self.navigationItem) && (nil == self.navigationItem.title))
{
    NSString* strTitle = @"Video Conference";
    [self.navigationItem setTitle:strTitle];
}

CGRect rcScreen = self.view.bounds;
if (NSFoundationVersionNumber_iOS_6_1 < NSFoundationVersionNumber)
{
    CGFloat fValue = [UIApplication sharedApplication].statusBarFrame.size.height;
    rcScreen.origin.y = fValue;
    if (nil != self.navigationController)
    {
        if (NO == self.navigationController.navigationBarHidden)
        {
            fValue = self.navigationController.navigationBar.frame.size.height;
            rcScreen.origin.y += fValue;
        }
    }
}

// Initialize Remote video view
CGRect rcRemote = CGRectZero;
if (UIUserInterfaceIdiomPad == [UIDevice currentDevice].userInterfaceIdiom)
{
    // iPad
    rcRemote.size.width = 480.0f;
    rcRemote.size.height = 480.0f;
}
else
{
    // iPhone / iPod touch
    rcRemote.size.width = rcScreen.size.width;
    rcRemote.size.height = rcRemote.size.width;
}
rcRemote.origin.x = (rcScreen.size.width - rcRemote.size.width) / 2.0f;
rcRemote.origin.y = (rcScreen.size.height - rcRemote.size.height) / 2.0f;
rcRemote.origin.y -= 8.0f;

// Initialize Local video view
CGRect rcLocal = CGRectZero;
if (UIUserInterfaceIdiomPad == [UIDevice currentDevice].userInterfaceIdiom)
{
    rcLocal.size.width = rcScreen.size.width / 5.0f;
    rcLocal.size.height = rcScreen.size.height / 5.0f;
}
else
{
    rcLocal.size.width = rcScreen.size.height / 5.0f;
    rcLocal.size.height = rcLocal.size.width;
}
rcLocal.origin.x = rcScreen.size.width - rcLocal.size.width - 8.0f;
rcLocal.origin.y = rcScreen.size.height - rcLocal.size.height - 8.0f;
rcLocal.origin.y -= self.navigationController.toolbar.frame.size.height;

// New frames for local and remote video views
CGRect rcRemoteNew;
rcRemoteNew.origin.x = 10.0;
rcRemoteNew.origin.y = 20.0;
rcRemoteNew.size.width = SCREEN_WIDTH - 10;
rcRemoteNew.size.height = SCREEN_HEIGHT/2 + 100;

CGRect rcLocalNew;
rcLocalNew.origin.x = SCREEN_WIDTH/2 - 50;
rcLocalNew.origin.y = SCREEN_HEIGHT/2;
rcLocalNew.size.width = 100;
rcLocalNew.size.height = 100;

////////////  START: Add Remote & Local SKWVideo to View   ///////////

SKWVideo* vwRemote = [[SKWVideo alloc] initWithFrame:rcRemote];
[vwRemote setTag:TAG_REMOTE_VIDEO];
[vwRemote setUserInteractionEnabled:NO];
[vwRemote setHidden:YES];
[self.view addSubview:vwRemote];

SKWVideo* vwLocal = [[SKWVideo alloc] initWithFrame:rcLocal];
[vwLocal setTag:TAG_LOCAL_VIDEO];
[self.view addSubview:vwLocal];

// Add local stream to local video view
[vwLocal addSrc:_msLocal track:0];

////////////  END: Add Remote & Local SKWVideo to View   /////////////
1个回答

1
用这段代码替换你的代码
SKWMediaConstraints* constraints = [[SKWMediaConstraints alloc] init];
    constraints.maxWidth = 960;
    constraints.maxHeight = 540;

    //  constraints.cameraPosition = SKW_CAMERA_POSITION_BACK;
    constraints.cameraPosition = SKW_CAMERA_POSITION_FRONT;

    _msLocal = [SKWNavigator getUserMedia:constraints];

    //////////////////// END: Get Local Stream   /////////////////////////
    // Initialize views
    if ((nil != self.navigationItem) && (nil == self.navigationItem.title))
    {
        NSString* strTitle = @"Video Conference";
        [self.navigationItem setTitletrTitle];
    }

    CGRect rcScreen = self.view.bounds;
    if (NSFoundationVersionNumber_iOS_6_1 < NSFoundationVersionNumber)
    {
        CGFloat fValue = [UIApplication sharedApplication].statusBarFrame.size.height;
        rcScreen.origin.y = fValue;
        if (nil != self.navigationController)
        {
            if (NO == self.navigationController.navigationBarHidden)
            {
                fValue = self.navigationController.navigationBar.frame.size.height;
                rcScreen.origin.y += fValue;
            }
        }
    }

    // Initialize Local video view
    CGRect rcLocal = CGRectZero;
    if (UIUserInterfaceIdiomPad == [UIDevice currentDevice].userInterfaceIdiom)
    {
        rcLocal.size.width = rcScreen.size.width / 5.0f;
        rcLocal.size.height = rcScreen.size.height / 5.0f;
    }
    else
    {
        rcLocal.size.width = rcScreen.size.height / 5.0f;
        rcLocal.size.height = rcLocal.size.width;
    }
    rcLocal.origin.x = rcScreen.size.width - rcLocal.size.width - 8.0f;
    rcLocal.origin.y = rcScreen.size.height - rcLocal.size.height - 58.0f; // changed from 8 to 78 so to present this view above control views
    rcLocal.origin.y -= self.navigationController.toolbar.frame.size.height;

    // New frames for local and remote video views
    CGRect rcRemoteNew;
    rcRemoteNew.origin.x = 0.0;
    rcRemoteNew.origin.y = 0.0;
    rcRemoteNew.size.width = SCREEN_WIDTH;
    rcRemoteNew.size.height = SCREEN_HEIGHT;

    ////////////  START: Add Remote & Local SKWVideo to View   ///////////
    SKWVideo* vwRemote = [[SKWVideo alloc] initWithFrame:rcRemoteNew];
    [vwRemote setBackgroundColorUIColor blackColor]];
    [vwRemote setTag:TAG_REMOTE_VIDEO];
    [vwRemote setUserInteractionEnabled:NO];
    [vwRemote setHidden:YES];
    [baseView addSubview:vwRemote];

    SKWVideo* vwLocal = [[SKWVideo alloc] initWithFrame:rcLocal];
    [vwLocal setBackgroundColorUIColor clearColor]];
    [vwLocal setTag:TAG_LOCAL_VIDEO];
    [baseView addSubview:vwLocal];

    // Add local stream to local video view
    [vwLocal addSrc:_msLocal track:0];

    ////////////  END: Add Remote & Local SKWVideo to View   /////////////

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接