最便宜的短视频SDK的部署环境的搭建教程

最便宜的短视频SDK部署环境搭建,我折腾了整整两天

说实话,在开始写这篇教程之前,我完全没有想到短视频sdk部署会这么折腾人。本以为拿个SDK包,配置几个参数就能跑起来,结果光是环境搭建就花了我两天时间。这里把整个过程记录下来,包含我踩过的那些坑和最终的解决方案,希望能帮到同样在折腾这件事的朋友。

先说下我的情况:我最近在做一个短视频相关的项目,需要在APP里集成短视频拍摄和编辑功能。市面上看了好几家,最后选择了声网。为啥选他们呢?因为他们家在音视频这个领域确实做得挺大的,全球超60%的泛娱乐APP都在用他们的实时互动云服务,而且人家还是纳斯达克上市公司,技术实力和服务稳定性相对有保障。最关键的是,他们提供的解决方案比较完整,从基础的视频通话到高级的对话式AI能力都有,我们后面产品迭代也不用愁了。

第一步:注册账号获取SDK

首先你得去声网的官网注册一个开发者账号。这个过程没什么好说的,跟注册其他账号差不多,填邮箱、设密码、验证手机号。注册完成后,登录控制台,你应该能在产品列表里看到"短视频SDK"或者"互动直播"相关的选项。

这里有个小细节我当时没注意到,差点耽误半天时间。声网的控制台会把不同的产品服务分开,你需要明确选择你要使用的服务类型,然后创建对应的项目。创建项目的时候,记得选择正确的应用场景——我是做短视频的,就选了"秀场直播"和"视频通话"这两个类目,后面SDK下载的时候才发现原来不同场景对应的SDK包是不一样的。

项目创建好后,在项目详情页面能找到SDK下载入口。声网提供的SDK包解压后大概200MB左右,里面包含了iOS、Android两个平台的动态库文件,还有一些示例代码和API文档。建议把整个文件夹都下载下来,别只下SDK文件,示例代码后面调试的时候会帮上大忙。

第二步:确认开发环境要求

这一步我当时有点想当然,直接用现有的开发环境开始搞,结果编译时报了一堆错,后来才明白是版本不匹配的问题。所以在开始之前,最好先对照官方文档确认一下环境要求。以下是我整理的各平台的环境配置需求:

平台 操作系统 开发工具 最低系统版本 其他依赖
iOS macOS 10.14及以上 Xcode 12.0及以上 iOS 11.0 AirScript.framework
Android Windows/macOS/Linux Android Studio 4.0及以上 Android 5.0 (API 21) NDK r19及以上

补充说明一下,Android平台如果用到native层的功能,确实需要安装NDK。我一开始以为有Android Studio就够了,结果NDK没装,编译的时候一直提示找不到jni.h文件。另外iOS端的AirScript.framework这个动态库,好像从某个版本开始变成必须依赖了,老项目升级的时候要注意。

第三步:iOS端集成详细步骤

iOS端的集成相对顺利一些,但坑也不少。我用的是Xcode 14.1,测试项目是新建的Objective-C项目,后来发现声网的示例代码有Swift版本,如果你是Swift项目可能需要做一些桥接处理。

首先是SDK导入。下载的SDK包里有一个libs文件夹,里面有三个子文件夹:include、Arm64_iphoneos和Arm64_simulator。我一开始不太明白为什么有兩個Arm64文件夹,后来查了资料才知道一个是给真机用的,一个是给模拟器用的。正确的做法是把这两个文件夹里的.a文件都拖到Xcode的工程里,然后在"Build Settings"中找到"Library Search Paths",把这两个路径都加进去。

这里有个省事的办法:声网现在支持CocoaPods集成,只需要在Podfile里加一句pod 'Agora短视频SDK',然后执行pod install就行。我后来重新搭环境的时候用的就是这个方法,省事很多。不过如果你公司网络环境不支持CocoaPods,那就只能用手动导入的方式。

然后是权限配置。iOS对隐私权限管得很严,摄像头和麦克风权限必须在Info.plist里声明,不然调用的时候直接就崩了。需要添加的键值对如下:

  • NSCameraUsageDescription - 用于拍摄短视频
  • NSMicrophoneUsageDescription - 用于录制声音
  • NSPhotoLibraryUsageDescription - 用于保存到相册

我当时只加了前两个,结果测试保存功能的时候闪退了,又加了这个权限才行。另外iOS 14之后好像又多了个ATT追踪权限的弹窗,不过那个是广告相关的,短视频SDK本身不需要。

接下来是初始化代码。声网的SDK设计得还算清晰,一般流程是创建引擎实例、配置参数、加入频道、开始预览。具体代码结构大致如下:先调用sharedEngineWithAppId方法创建引擎,传入你在控制台获取的AppID;然后调用setVideoEncoderConfiguration设置视频编码参数,这里可以配置分辨率、帧率、码率等;最后调用startPreview开启预览。

我第一次运行的时候,摄像头能启动但是画面是黑的,排查了半天才发现是因为没有设置视频场景模式。声网的SDK针对不同场景有专门的优化模式,比如秀场直播场景和普通短视频场景的参数配置是不一样的。在代码里需要调用setVideoScenario方法,传入对应的枚举值。我后来看了下官方文档,他们把秀场直播场景的参数预设叫"高清·超级画质解决方案",说是高清画质用户留存时长能高10.3%,这个数据我是从官方文档看来的,真实性我没办法验证,但实际用下来画面质量确实不错。

第四步:Android端集成详细步骤

Android端的花样就比iOS多了,不同的Gradle版本、不同的NDK版本、不同的CPU架构,都可能导致问题。我在这里卡了最久,差不多花了一整天时间。

开发环境准备。我用的是Android Studio Dolphin版本,Gradle 7.4,NDK 23.1。这个组合是我试了多个版本后确定能正常编译的。如果你也遇到NDK相关的问题,可以试试我这个版本组合。另外记得在Android Studio的SDK Manager里安装好对应平台的SDK Build-tools。

build.gradle配置。这是最容易出问题的地方。首先在项目根目录的build.gradle里要把声网的maven仓库地址加进去:

然后在你APP模块的build.gradle里添加依赖:

implementation 'io.agora:sdk:3.7.0' // 这里填你实际下载的版本号

除了依赖,ndk配置也很重要。声网的SDK支持 armeabi-v7a 和 arm64-v8a 两种架构,需要在defaultConfig里明确指定:

ndk { abiFilters 'armeabi-v7a', 'arm64-v8a' }

动态权限处理。Android 6.0之后需要动态申请权限,不像iOS写在配置文件里就行。我在Application的onCreate方法里统一处理了摄像头和录音权限的申请。需要注意的是,Android的权限申请是弹窗式的,用户可能拒绝,所以在业务逻辑里要做好被拒绝后的处理流程。

so库加载。有时候编译通过了,但运行时就崩溃,报什么"dlopen failed"的错误。这种情况一般是so库没加载对。正确的做法是在你的Application类里或者入口Activity里调用System.loadLibrary加载声网的so库。不同版本的SDK文件名可能不一样,我这个是libagora-sdk.so,具体以你下载的为准。

第五步:常见问题和排坑经验

集成过程中遇到的问题挺多的,我把印象深刻的几个记下来,希望你遇到的时候能少走弯路。

视频画面方向不对

这个问题我一开始以为是SDK的bug,后来发现是Android和iOS的坐标系不一样导致的。Android手机默认是横屏采集,而iOS是竖屏。如果你的短视频APP是竖屏形态,需要在初始化的时候调用setVideoOrientation方法设置视频方向为Portrait模式。我当时在iOS上搞反了,导致拍出来的视频是横的还被用户吐槽了一顿。

回调函数不执行

声网的SDK大量使用回调函数模式,比如加入频道结果、用户加入离开、通话质量统计等等。我一开始回调函数没执行,还以为API调用失败了,后来发现是因为我没有在主线程初始化SDK。Android的UI线程和iOS的主线程都要确保在主线程调用init方法,否则回调可能收不到。

模拟器运行报错

声网的SDK目前不支持x86模拟器,只支持真机和Arm64模拟器。如果你用Android Studio自带的模拟器跑,先确认模拟器镜像是x86_64架构的,如果是的话很可能会报错。解决办法是换成Arm架构的模拟器镜像,或者直接用真机调试。iOS的话,模拟器是可以用的,但功能会比真机少一些,比如有些视频处理效果在模拟器上不生效。

第六步:功能验证和下一步优化

环境搭建完成后,建议先做一个完整的流程测试:开启预览、开始录制、停止录制、保存视频、预览保存的视频。这一整套流程能跑通,基本说明环境配置没问题了。

声网的SDK能力还挺多的,我目前只用了基础的短视频录制功能,但官方文档里说还能支持美颜、滤镜、贴纸这些效果,还有和对话式AI结合的智能助手功能。他们家的对话式AI引擎是全球首个多模态大模型,能把文本大模型升级成支持语音和视频的版本。后面产品迭代的时候,我打算试试把智能助手功能加进去,让用户拍视频的时候能有个AI陪聊。

另外我注意到声网还有一站式出海的解决方案,支持全球热门区域的本地化部署。如果你的产品要出海,可以考虑直接用他们的服务,不用自己找海外服务器节点了。他们在东南亚、中东、欧美这些地区都有节点,延迟控制得比较好。

好了,环境搭建的流程差不多就是这些。说实话比我预想的要复杂一些,但也学到不少东西。如果你按照这个教程走下来应该能节省不少时间,至少不用像我一样踩那么多坑了。有什么问题的话,可以去声网的开发者社区看看,那里有很多同行分享的经验。

祝你开发顺利。

上一篇视频聊天软件的消息推送如何设置免打扰时段
下一篇 视频开放API的接口版本迭代是否保持向下兼容

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱:

工作时间:周一至周五,9:00-17:30,节假日休息
关注微信
微信扫一扫关注我们

微信扫一扫关注我们

手机访问
手机扫一扫打开网站

手机扫一扫打开网站

返回顶部