最小流程
权限与授权窗
在module.json5 里声明:
三种采集模式
ScreenCaptureMode 决定采什么:
采集系统音频
传第二个预设参数即可,系统音频会作为独立的一条音频轨道产生:ScreenAudioCaptureOptions 有个关键字段:
系统音频是独立轨道,所以可以单独控制 —— 比如”共享画面但不共享声音”就只发布视频轨。麦克风与系统音频也是两条独立轨道,鸿蒙上每条音频轨有自己的
AudioSource,
不存在 iOS 那种”必须先混成一路”的限制。编码策略:屏幕与摄像头相反
屏幕内容变化慢、细节多(文字、表格),所以 SDK 内部对屏幕轨道启用isScreencast=true,让编码器切到保清晰度优先的策略 —— 宁可掉帧也不糊字。
这与摄像头正相反(摄像头保帧率、宁可降分辨率)。默认帧率也不同:
如果共享的是视频播放画面,可以自己把
frameRate 提上去,但要相应提高
maxBitrate,否则会更糊。
横竖屏
SDK 内部开了ohosScreenCaptureAutoRotation,旋转屏幕时采集会自动跟随 ——
否则横竖屏切换后对端画面是躺着的。这一点不需要业务侧处理。
排查清单
排障时先看日志里那条
请求屏幕采集 WxH@fps mode=... 系统声音=... ——
有这条说明参数已经组好、走到了系统调用;没有这条说明更早就失败了。