使用Linphone IOS SDK 5开发SIP通话录音功能遇文件为空问题求助
Linphone iOS SDK 5通话录音异常解决思路
- 修正存储路径格式
Linphone SDK的recordFile参数仅支持不带协议前缀的本地绝对路径,你当前使用的getWhistleURL().absoluteString会返回带file://前缀的字符串,SDK无法识别写入,需要改为调用getWhistleURL().path获取纯路径字符串。 - 开启音频流混合配置
只能录制本地声音、无法录制远端音频的核心原因是默认仅录制本地麦克风输入,需要在Core初始化时开启混合流开关:// 混合本地麦克风输入+远端音频流后再录制 mCore.audioRecordingMixStreams = true // 匹配通话音频采样率,避免编码异常 mCore.recordSampleRate = 16000 - 调整录音触发时机
不建议在创建呼出参数时直接设置recordFile,更稳定的方式是在通话状态回调监听到连接成功后再主动开启录音:func onCallStateChanged(call: Call, state: CallState, message: String) { switch state { case .Connected: // 通话接通后再启动录音 call.startRecording(filePath: getWhistleURL().path) case .End, .Error: // 通话结束主动停止录音,确保文件缓冲区写入磁盘 call.stopRecording() default: break } } - 验证存储目录权限
确认你创建的录音文件存储路径位于App沙盒允许读写的目录下,例如NSDocumentDirectory或NSCachesDirectory,不要尝试写入系统级目录。
内容的提问来源于stack exchange,提问作者Moskwinow
相关产品推荐
相关产品推荐

