让 Adobe AIR 走得更远的原生扩展。
无需 APM。下载即用,再简单不过。
每个扩展都是一个独立的文件:没有核心库,没有依赖 ANE,也不需要包管理器。
Klug 为 iOS、Android 和 macOS 上的 Adobe AIR 开发原生扩展:摄像头、带回声消除的双向语音、推送以及设备 API。我们的扩展已在自家应用中投入生产使用。
var media:CameraStreamANE = CameraStreamANE.instance; if ( media.isSupported ) { // camera, H.264 and RTMP in one native session media.startPublish( "rtmp://your.server/live", "station-1", 640, 480, 12, 800 ); }
十二个扩展,一种工作方式
每个扩展都是带有 isSupported 检查的单例,因此同一份 ActionScript 代码可在所有受支持的平台上运行。
KlugMedia
摄像头、双向语音和回声消除集于同一个原生会话,通过标准 RTMP 传输 H.264 和 Opus 流。
KlugPush
适用于 Mac 上 AIR 应用的远程推送通知,支持权限状态查询以及跳转系统设置的快捷方式。
KlugKeychain
将键/值安全存储在系统钥匙串中,即使卸载并重新安装应用,数据依然保留。
KlugDialog
适用于 Android、iOS 和 macOS 上 AIR 应用的原生提示框、位于键盘上方带文本输入框的对话框以及进度对话框。
KlugTorch
检测设备是否配有摄像头补光灯,并可在摄像头推流期间开启和关闭补光灯。
KlugDeviceId
为 Android 和 iOS 上的每台设备提供稳定的标识符,例如用于在重新安装后再次识别设备。
KlugDeviceType
直接从系统获取可靠的手机或平板检测结果,不受屏幕方向和窗口大小影响。
KlugBlackScreen
在系统窗口(例如权限提示)关闭后,恢复 Android 上的显示。
KlugLayout
为 Android 平板提供两侧横屏支持,并支持 Galaxy Z Fold、Pixel Fold、Galaxy Z Flip 和 iPhone Duo 的折叠及外屏检测。
KlugRegister
生成二维码,并通过原生摄像头扫描器扫描,例如无需密码即可登录第二台设备。
KlugAuth
通过系统界面使用 Apple 登录和 Google 登录,并为您的服务器提供身份令牌。
KlugSystem
应用内浏览器、带变更事件的网络状态,以及指纹 / Face ID 验证。
Klug Streaming Server
为您的实时视频应用提供服务器:流处理、双向语音中继、在任意网页浏览器中观看、MP4 录制以及网络中断后的恢复。与 KlugMedia 共同打造,并已在生产环境中运行我们的应用。以编译好的安装包形式交付。
KlugMedia
AIR 目前没有提供最新的实时媒体流实现。KlugMedia 以原生扩展的形式补上了这一块:摄像头、麦克风、编码器和回声消除在同一个原生会话中运行,ActionScript 只负责发送命令。
它附带配套的服务器软件,与扩展一同设计:流处理、可靠的重新连接、双向语音中继以及在网页浏览器中实时观看。
- 摄像头采集与 H.264 推流
- 原生 H.264 接收与显示,绘制在舞台之上
- 带硬件回声消除的双向 Opus 语音
- 原生预览、摄像头切换、补光灯和缩放
- 直接从摄像头画面获取快照
- 在流媒体服务器上录制 MP4
- 标准 RTMP
- 新:Apple 芯片 Mac 上的 iPad 应用,一次构建同时适用于 iPhone、iPad 和 Mac
- 已为 iOS 27 和 macOS 27 做好准备
// play a remote stream natively media.startReceive( "rtmp://your.server/live", "station-1", 0, 0, 640, 480, 0, CameraStreamANE.RECEIVE_FIT ); // two-way voice with echo cancellation var voice:OpusVoiceBridge = new OpusVoiceBridge( new NativeOpusCodec(), 48000, 1, 960 ); voice.setVoiceProcessing( true ); voice.start();
Klug Streaming Server
KlugMedia 附带专属服务器软件,与扩展一同开发,并针对 AIR 应用和原生扩展进行了调优。客户端与服务器按一个整体系统设计,因此在较弱的网络上流也能快速启动并持续运行。
实时视频与语音
H.264 视频和 Opus 语音从摄像头应用传送到每位观看者,并支持实时双向语音。
可靠的连接
干净利落的流启动与停止,观看者可以等待流上线,并能在网络中断或服务器重启后自动恢复。
在浏览器中观看
同一路实时流,画面与声音俱全,可在任意现代网页浏览器中观看,并受账户登录保护。
MP4 录制
流在服务器上录制为 MP4 文件,含画面与声音,可直接在应用或浏览器中播放。
默认私密
每个账户都有自己的流,与其他账户完全隔离。
已投入生产
在标准 Linux 云服务器上,为欧洲和美洲的客户运行我们的应用。
我们如何构建扩展
原生优先
对时间敏感的工作在各平台的原生代码中运行。ActionScript 只发送命令并接收状态,因此即使在较旧的设备上,应用也能保持流畅。
经生产验证
我们的扩展由真实客户在我们的应用中使用,这就是我们的概念验证:已上架 App Store、Google Play 和 Mac,覆盖当前设备与较旧设备。
客户端与服务器浑然一体
对于媒体功能,扩展与服务器软件共同开发,因此流启动迅速,并能自行恢复。
关于 AIR 原生扩展的问题
什么是 ANE (AIR Native Extension)?
ANE 是一种软件包,可为 Adobe AIR 应用添加原生 iOS、Android 或 macOS 代码。应用通过 ActionScript 调用它,扩展则在设备上以原生代码完成工作。
Klug 扩展支持哪些平台?
Klug 扩展可在 iOS、Android 和 macOS 上运行。每个扩展都有 isSupported 检查,因此同一份 ActionScript 可以保留在跨平台应用中。每个扩展支持的平台列在其页面上。
这些扩展需要哪个 AIR SDK?
这些扩展针对 HARMAN AIR SDK 51.x 构建。
Adobe AIR 应用能否实现带双向语音的实时视频流?
可以,使用 KlugMedia。摄像头、麦克风、H.264 编码器和回声消除在同一个原生会话中运行,视频通过标准 RTMP 发送,双向语音使用 Opus。
Klug Streaming Server 带来了什么?
Klug Streaming Server 与 KlugMedia 共同打造。它负责处理流、中继双向语音、将实时流分发给网页浏览器、录制 MP4 文件,并在网络中断后自动恢复。
这些扩展是否用于真实应用?
是的。我们的应用每天都在 App Store、Google Play 和 Mac 上使用它们,覆盖当前设备与较旧设备。它们就是我们的概念验证。
Klug 能否为我的 AIR 应用构建原生功能?
可以。我们为 AIR 应用开发原生功能,从单个扩展到完整的流媒体解决方案均可。请写信至 [email protected]。
有兴趣与我们合作吗?
无论您需要我们的某个扩展、为 AIR 应用定制的原生功能,还是完整的流媒体解决方案,我们都期待听到您的声音。