如何在 Quickblox iOS 中从远程视频中捕获视频帧

Posted

技术标签:

【中文标题】如何在 Quickblox iOS 中从远程视频中捕获视频帧【英文标题】:How to capture video frames from Remote Video in Quickblox iOS 【发布时间】:2016-11-15 09:11:51 【问题描述】:

我想在运行时获取远程用户(远程流)的屏幕截图, 我试图通过远程视图获取当前的CurrentImageContext 作为UIGraphicsBeginImageContextWithOptions(myRemoteView.bounds.size, myRemoteView.opaque, 0.0f)[myRemoteView drawViewHierarchyInRect:myRemoteView.bounds afterScreenUpdates:YES] 的参数,但是在运行时捕获时出现空白屏幕,关于如何在这方面进行的任何线索? 我正在使用最新版本的 Quickblox、ios 10 和 xcode 8。

此方法在远程用户连接时作为回调调用,

(void)session:(QBRTCSession *)session receivedRemoteVideoTrack:(QBRTCVideoTrack *)videoTrack fromUser:(NSNumber *)userID

QBRTCVideoTrack *remoteVideoTrak=[self.session remoteVideoTrackWithUserID:@(user.ID)]; QBRTCRemoteVideoView *remoteVideoView = [[QBRTCRemoteVideoView alloc] init]; remoteVideoView.frame = self.remoteVV.bounds;

[remoteVideoView setVideoTrack:remoteVideoTrak];
[self.remoteVV addSubview:remoteVideoView];

我想捕获“self.remoteVV”作为屏幕截图,但它总是给我一个黑色图像。

【问题讨论】:

在github.com/QuickBlox/quickblox-ios-sdk/issues/649 QuickBlox Git Repo 上发布了同样的问题,需要一些解决方法 【参考方案1】:

您可以尝试使用此代码在同一视频会议中拍摄远程流的屏幕截图。它对我有用。

UIGraphicsBeginImageContextWithOptions(self.bounds.size, NO, 2.0f);
        [self drawViewHierarchyInRect:self.bounds afterScreenUpdates:YES];
        UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();

【讨论】:

【参考方案2】:
This helped me to capture the StreamView.

func captureScreen() -> UIImage? 
        guard let streamView = conferenceStreamView else  return nil 
        UIGraphicsBeginImageContextWithOptions(streamView.bounds.size, false, 0);
        streamView.drawHierarchy(in: streamView.bounds, afterScreenUpdates: true)
        let image: UIImage = UIGraphicsGetImageFromCurrentImageContext()!
        UIGraphicsEndImageContext()
        return image
    

【讨论】:

以上是关于如何在 Quickblox iOS 中从远程视频中捕获视频帧的主要内容,如果未能解决你的问题,请参考以下文章

Quickblox 错误,远程/本地视频轨道未在 QBRTCSurfaceView 中呈现

在 IOS 中使用 QuickBlox 视频聊天,无需登录或密码

quickblox 接受视频聊天通话问题

如何使用 QuickBlox 录制视频通话

如何在 android 中从远程 url 播放实时视频流?

Android 上的 Quickblox 视频通话