本文介绍集成视频直播推流 SDK(Android/iOS/Flutter/Web)及播放器 SDK 时的常见问题。
AlivcLivePushInfoListener 等推流回调不触发怎么排查?
回调监听必须在调用 startPush() 之前通过 setLivePushInfoListener() 注册,推流开始后再注册将无法收到此前的事件。
使用推流 SDK 前需先调用 AlivcLiveBase.registerSDK() 注册 License,否则推流失败且回调异常。
错误事件请通过 AlivcLivePushErrorListener 监听,并可调用 getLastError() 获取最近一次错误详情。
Flutter 直播插件版本如何匹配?Demo 跑不起来怎么办?
flutter_livepush_plugin 与 flutter_aliplayer 的版本需要匹配使用(例如 7.11.0 搭配 7.11.0-interactivelive),版本不匹配会导致编译或运行失败。推荐使用 Flutter 2.8.0~3.22.2 版本区间。集成失败时,请先用官方 Demo 与推荐版本组合验证环境,再逐步替换为业务代码。
针对 setOnPreviewStarted、setOnPreviewStoped 等回调不触发的问题,请按以下顺序排查:
必须在调用
startPreview()之前设置回调,推流开始后再设置将无法收到此前的事件。必须调用
livePusher.setInfoDelegate()启用状态监听。确保
startPreview()在预览容器(如AliLiveFlutterView)创建完成后调用。建议设置回调后延时约 100 ms 再调用
startPreview(),避免渲染上下文未就绪。
针对 Android 端预览黑屏且无回调的问题:
在
_onPusherPreviewCreated中调用startPreview()时,不应使用异步延迟(如Future.delayed),避免 UI 渲染与 SDK 初始化时序冲突。建议开启 Debug 日志辅助定位:调用
AlivcLiveBase.setConsoleEnable(true)和AlivcLiveBase.setLogLevel(AlivcLivePushLogLevel.debug)。
"Illegal State, you should init first" 报错原因为 SDK 调用顺序错误。请确保 AlivcLivePusher 实例已成功 init 后再调用 startPreview,并检查 UI 生命周期与 SDK 初始化时序是否匹配。
若使用 Flutter 3.41.4 等高版本出现兼容性问题,建议降级至 3.22.2,或使用 2.8.0 版本(支持 2.5.0~3.0.0)。
推流/预览中可以动态切换横竖屏吗?
不支持在预览或推流过程中动态切换横竖屏。屏幕方向需在开始预览/推流前通过 setPreviewOrientation 设置;如需切换方向,应先 stopPreview 再重新 startPreview。横屏推流出现画面拉伸时,可在方向设置完成后延迟约 100 毫秒再调用 startPreview。
直播互动消息支持哪些平台?有 Flutter SDK 吗?
直播互动消息(IM)目前支持 Android、iOS、微信小程序、Web H5(可配合 uni-app 使用),不提供 Flutter SDK。Flutter 应用如需互动消息能力,可通过原生插件桥接方式自行封装集成。
如何在 UniApp X 中集成视频直播原生 SDK?
可以通过自定义 UniApp X 插件(UTS 插件)来集成 iOS 和 Android 原生的视频直播 SDK。具体步骤包括:
参考 UniApp X 官方 UTS 插件开发文档创建插件。
在插件中封装 SDK 的初始化、推流、停止等公共方法供 UTS 调用。
详细的原生 SDK 方法列表及使用步骤请参考 Android/iOS 端推流 SDK 开发者文档。
Flutter aliplayer 插件如何修改为本地依赖?
如需将 Flutter aliplayer 插件修改为本地依赖,需分别修改以下配置文件并将相关配置项设置为 true:
iOS 端:修改
flutter_aliplayer.podspec文件。Android 端:修改
build.gradle文件。
播放器 SDK 提示未激活怎么排查?
播放器 SDK 提示 License 未激活时,请按以下顺序排查:
检查控制台应用管理中的域名配置是否与当前页面域名一致。
检查代码中配置的 domain 是否与控制台配置完全匹配。
确认 Key 配置正确:必须使用 License Key,而非 AppID。
修正上述配置后重新测试即可解决。
Flutter 推流 SDK 设置配置参数时是否需要使用 await 等待?
不需要。设置 pusherConfig 配置参数以及调用相关方法时,均不需要使用 await 等待。
Android 推流 SDK 基础模式下如何切换或调整预览视图?
设置预览显示模式:在基础模式下,可以通过
mAlivcLivePushConfig.setPreviewDisplayMode()方法设置预览显示模式,支持铺满窗口、保持比例、裁剪适配三种模式。推流中动态调整预览视图:若需在推流过程中动态更改预览视图,可以调整预览 View 的子视图布局来实现,例如遍历
startPreview时传入的SurfaceView的所有subView并修改其 frame。