在Android中,使用webrtc官方提供的Demo。在创建peerconnectionfactory时,将自定义so库中的音频编解码器工厂对象传递给webrtc的so库。webrtc的so库会使用刚传递进来的编解码器工厂对象,去调用这个工厂对象中的函数GetSupportedEncoders(),而函数将会构造数据将vector<.AudioCodecSpec>的对象specs进行返回。然后再webrtc的so库中,根据specs进行数据打印,发现如果直接cout打印specs里面的string成员变量name,直接使用无值且日志输出也无值;如果name调用了c_str()方法,使用有值且cout打印输出才有值。请问,在webrtc的so里面,如何不调用c_str()前提获取值。
2.1自定义so库中的GetSupportedEncoders()方法
std::vector<AudioCodecSpec> GetSupportedEncoders()override { std::vector<AudioCodecSpec> specs; const SdpAudioFormat fmt = {"opus", 48000, 2, {{"minptime", "10"}, {"useinbandfec", "1"}}}; AudioCodecInfo info(48000, 2, 32000, 6000, 510000); info.allow_comfort_noise = false; info.supports_network_adaption = true; AudioCodecSpec spec ={fmt,info}; specs.push_back(spec); return specs; }
2.2webrtc中so库函数调用与数据打印
函数调用: CollectCodecs(encoder_factory_->GetSupportedEncoders()); 数据打印: std::vector<AudioCodec> WebRtcVoiceEngine::CollectCodecs( const std::vector<webrtc::AudioCodecSpec>& specs) const { PayloadTypeMapper mapper; std::vector<AudioCodec> out; std::string name = "webrtc"; RTC_LOG(LS_ERROR) << "WebRtcVoiceEngine::CollectCodecs() webrtc.name="<< name; RTC_LOG(LS_ERROR) << "WebRtcVoiceEngine::CollectCodecs() specs.size="<<specs.size(); RTC_LOG(LS_ERROR) << "WebRtcVoiceEngine::CollectCodecs() specs.back().format.name= "<<specs.back().format.name; RTC_LOG(LS_ERROR) << "WebRtcVoiceEngine::CollectCodecs() specs.back().format.name.c_str()= "<<specs.back().format.name.c_str(); RTC_LOG(LS_ERROR) << "WebRtcVoiceEngine::CollectCodecs() specs.back().format.clockrate_hz="<<specs.back().format.clockrate_hz; RTC_LOG(LS_ERROR) << "WebRtcVoiceEngine::CollectCodecs() specs.back().format.num_channels="<<specs.back().format.num_channels; }
#3.Android-Logcat日志截图
#4.备注说明 4.1.如果直接在webrtc的so库中定义string类型变量,直接打印输出是有值; 4.2.自定义so库是在Android studio中用cmake生成放入到webrtc中的demo; 4.3.webrtc中demo使用的webrtc.aar文件是自己重新编译生成的;
来源:即时通讯网 - 即时通讯开发者社区!
1595991422_432560.png (212.41 KB, 下载次数: 1187)
下载附件 保存到相册
4 年前 上传
日志输出
轻量级开源移动端即时通讯框架。
快速入门 / 性能 / 指南 / 提问
轻量级Web端即时通讯框架。
详细介绍 / 精编源码 / 手册教程
移动端实时音视频框架。
详细介绍 / 性能测试 / 安装体验
基于MobileIMSDK的移动IM系统。
详细介绍 / 产品截图 / 安装体验
一套产品级Web端IM系统。
详细介绍 / 产品截图 / 演示视频
引用此评论
引用:JackJiang 发表于 2020-07-31 21:25 你这是打算做什么样的定制开发吗
引用:Rowen 发表于 2020-07-31 22:31 在Android上,我需要使用自定义的音频编解码器,不使用webrtc提供的内置音频编解码器
引用:JackJiang 发表于 2020-07-31 23:05 使用内置音频编解码器时,没有任何问题是吧,下载的源码是稳定版吗
精华主题数超过100个。
连续任职达2年以上的合格正式版主
为论区做出突出贡献的开发者、版主等。
Copyright © 2014-2024 即时通讯网 - 即时通讯开发者社区 / 版本 V4.4
苏州网际时代信息科技有限公司 (苏ICP备16005070号-1)
Processed in 0.109375 second(s), 38 queries , Gzip On.