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

时间:2016-08-24 23:35:32

标签: swift video-streaming webrtc apprtcdemo apprtc

我目前正在尝试对AppRTC app for iOS in Swift中的传入WebRTC视频流进行一些修改(后者又基于this Objective-C版本)。为此,我需要访问存储在类RTCI420Frame的框架对象中的数据(这是libWebRTC的Objective-C实现的基本类)。特别是,我需要一个字节数组: [UInt8] 大小的帧。该数据将用于进一步处理和添加一些过滤器。

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

我正在研究RTCVideoChatViewController类,特别是 remoteView / remoteVideoTrack ,但是没有成功访问框架本身,花了很多时间研究libWebRTC源代码在正式的回购中,但仍然无法解决访问框架数据以进行自己操作的问题。很高兴得到任何帮助!

1 个答案:

答案 0 :(得分:3)

在发布问题之后,我很幸运找到了偷偷摸摸的数据!

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

@property(atomic, strong) RTCI420Frame* i420Frame;

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

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