如何在 AppRTC iOS 应用程序中获取帧数据以进行视频修改?

How to get frame data in AppRTC iOS app for video modifications?

我目前正在尝试对 AppRTC app for iOS in Swift (which in turn is based on this Objective-C version). To do so, I need access to the data which is stored in the frame objects of class RTCI420Frame (which is a basic class for the Objective-C implementation of libWebRTC 中传入的 WebRTC 视频流进行一些修改。特别是,我需要一个字节数组:帧的 [UInt8]Size。此数据将用于进一步处理和添加一些过滤器。

问题是,RTCVideoTrack / RTCEAGLVideoView 上的所有操作都是在预编译的引擎盖下完成的 libWebRTC.a,它是从链接的官方 WebRTC 存储库编译的上面的自定义构建相当复杂,所以我更愿意使用示例 iOS 项目中可用的构建;在我的理解中,它应该具有所有可用的功能。

我正在查看 RTCVideoChatViewController class,特别是 remoteView / remoteVideoTrack,但没有成功访问框架本身,花了很多时间研究官方回购中的 libWebRTC 源,但仍然无法解决访问框架数据以进行自己操作的问题。很高兴为您提供帮助!

刚刚发布问题,我很幸运地找到了偷偷摸摸的数据!

您必须将以下 属性 添加到 RTCEAGLVideoView.h 文件:

@property(atomic, strong) RTCI420Frame* i420Frame;

original implementation file 中有 i420Frame 属性 但它没有在 iOS 项目的头文件中公开 class。添加 属性 允许您获取视图的当前帧。

我仍在寻找一种更优雅的方式直接获取流数据,无需查看 remoteView 内容,一旦找到就会更新答案。