当前位置: 首页 > news >正文

手机建网站模板太原建站模板系统

手机建网站模板,太原建站模板系统,昆山建设局网站查预售,自己主机做多个网站https://www.yuque.com/caokunchao/rtendq/oq8w3qgs3g59whru 前言 版本webrtc m96 1、修改webrtc m96代码#xff0c;向外提供一个adm指针的接口出来 2、外部来获取指针进行设备的选择 3、外部获取音频裸流#xff0c;麦克风或者扬声器的数据 修改webrtc代码 1、修改H:\w…https://www.yuque.com/caokunchao/rtendq/oq8w3qgs3g59whru 前言 版本webrtc m96 1、修改webrtc m96代码向外提供一个adm指针的接口出来 2、外部来获取指针进行设备的选择 3、外部获取音频裸流麦克风或者扬声器的数据 修改webrtc代码 1、修改H:\webrtc\webrtc-checkout\webrtc\api\peer_connection_interface.hPeerConnectionFactoryInterface类 添加接口 class AudioDeviceModule; virtual rtc::scoped_refptrAudioDeviceModule GetAdmPtr() 0;2、修改H:\webrtc\webrtc-checkout\webrtc\pc\peer_connection_factory.h PeerConnectionFactory类该类继承PeerConnectionFactoryInterface实现GetAdmPtr()接口 #include modules/audio_device/include/audio_device.h #include media/base/media_engine.hrtc::scoped_refptrAudioDeviceModule GetAdmPtr() override {return context_-channel_manager()-media_engine()-voice().GetAdm();}3、修改代理H:\webrtc\webrtc-checkout\webrtc\pc\peer_connection_factory_proxy.h #include modules/audio_device/include/audio_device.h在 BEGIN_PROXY_MAP(PeerConnectionFactory) 下面添加代理方法 *** PROXY_METHOD0(rtc::scoped_refptrAudioDeviceModule,GetAdmPtr) *** END_PROXY_MAP(PeerConnectionFactory)4、修改H:\webrtc\webrtc-checkout\webrtc\media\base\media_engine.hVoiceEngineInterface类 添加接口 virtual rtc::scoped_refptr webrtc::AudioDeviceModule GetAdm() 0;5、修改H:\webrtc\webrtc-checkout\webrtc\media\engine\webrtc_voice_engine.hWebRtcVoiceEngine类 实现接口 rtc::scoped_refptrwebrtc::AudioDeviceModule GetAdm() override { return adm_; }外部切换设备 看我的krtcsdk源码 void MicImpl::Start() {RTC_LOG(LS_INFO) MicImpl Start call;KRTCGlobal::Instance()-worker_thread()-PostTask(webrtc::ToQueuedTask([]() {RTC_LOG(LS_INFO) MicImpl Start PostTask;KRTCError err KRTCError::kNoErr;do {// 1. 如果麦克风已经启动采集直接停止if (has_start_) {RTC_LOG(LS_WARNING) mic already start, mic_id: mic_id_;break;}// 2. 直接从webrtc获取adm模块指针rtc::scoped_refptrwebrtc::AudioDeviceModule audio_device KRTCGlobal::Instance()-push_peer_connection_factory()-GetAdmPtr();// 3. 检查系统是否存在麦克风设备int total audio_device-RecordingDevices();if (total 0) {RTC_LOG(LS_WARNING) no audio device;err KRTCError::kNoAudioDeviceErr;break;}// 4. 检查关联的mic_id是否能够在系统设备中找到int device_index -1;for (int i 0; i total; i) {char name[128];char guid[128];audio_device-RecordingDeviceName(i, name, guid);if (0 strcmp(guid, mic_id_.c_str())) {device_index i;break;}}if (device_index -1) {RTC_LOG(LS_WARNING) audio device not found, mic_id: mic_id_;err KRTCError::kAudioNotFoundErr;break;}// 5. 设置启用的麦克风设备if (audio_device-SetRecordingDevice(device_index)) {RTC_LOG(LS_WARNING) SetRecordingDevice failed, mic_id: mic_id_;err KRTCError::kAudioSetRecordingDeviceErr;break;}// 6. 设置为立体声采集audio_device-SetStereoRecording(true);// 7. 初始化麦克风if (audio_device-InitRecording() || !audio_device-RecordingIsInitialized()) {RTC_LOG(LS_WARNING) InitRecording failed, mic_id: mic_id_;err KRTCError::kAudioInitRecordingErr;break;}bool ok false;audio_device-PlayoutIsAvailable(ok);if (!ok) {RTC_LOG(LS_WARNING) PlayoutIsAvailable failed, mic_id: mic_id_;err KRTCError::kAudioInitRecordingErr;break;}int32_t ret audio_device-InitPlayout();if (audio_device-StartPlayout()) {RTC_LOG(LS_WARNING) StartPlayout failed!!!;err KRTCError::kAudioStartRecordingErr;break;}// 8. 启动麦克风采集if (audio_device-StartRecording()) {RTC_LOG(LS_WARNING) StartRecording failed, mic_id: mic_id_;err KRTCError::kAudioStartRecordingErr;break;}has_start_ true;} while (0);if (err KRTCError::kNoErr) {if (KRTCGlobal::Instance()-engine_observer()) {KRTCGlobal::Instance()-engine_observer()-OnAudioSourceSuccess();}}else {if (KRTCGlobal::Instance()-engine_observer()) {KRTCGlobal::Instance()-engine_observer()-OnAudioSourceFailed(err);}}})); }这里音频audio_device-StartRecording之前还必须加上audio_device-StartPlayout()否则会报错 (audio_device_core_win.cc:2351): Playout must be started before recording when using the built-in AEC 外部获取音频裸流 1、添加ADMDataObserver继承自webrtc::AudioDeviceDataObserver class ADMDataObserver : public webrtc::AudioDeviceDataObserver { private:virtual void OnCaptureData(const void* audio_samples,const size_t num_samples,const size_t bytes_per_sample,const size_t num_channels,const uint32_t samples_per_sec) override {}virtual void OnRenderData(const void* audio_samples,const size_t num_samples,const size_t bytes_per_sample,const size_t num_channels,const uint32_t samples_per_sec) override {}};OnCaptureData 音频采集麦克风数据OnRenderData需要播放的扬声器数据。。 2、创建webrtc::AudioDeviceModule rtc::scoped_refptrwebrtc::AudioDeviceModule audio_device_;worker_thread_-Invokevoid(RTC_FROM_HERE, []() {audio_device_ webrtc::AudioDeviceModule::Create(webrtc::AudioDeviceModule::kPlatformDefaultAudio,task_queue_factory_.get());audio_device_ webrtc::CreateAudioDeviceWithDataObserver(audio_device_, std::make_uniqueADMDataObserver());audio_device_-Init();});3、将audio_device_传入到webrtc::CreatePeerConnectionFactory即可。。 webrtc::CreatePeerConnectionFactory(network_thread_.get(), /* network_thread */worker_thread_.get(), /* worker_thread */signaling_thread_.get(), /* signaling_thread */audio_device_, /* default_adm */******参考资料 https://blog.csdn.net/qq_22658119/article/details/117664188 https://blog.csdn.net/weixin_39343678/article/details/99948451
http://www.yutouwan.com/news/127214/

相关文章:

  • 模板建站排版跟没缓存好似的自己怎么做网站网页
  • 网站开发工作方向有规范
  • 梅河口建设局网站通州区网站制作
  • 河南省建设安全监督站的网站成都创意网站设计
  • 网站如何做触屏滑动网站推广怎么样
  • 郑州外语网站建站优化活动列表 wordpress
  • 国内十大知名广告公司win7系统优化软件
  • 张北县网站建设苏州企业网站建设开发
  • 泉州网站建设服务西安seo计费管理
  • 相城区公司网站建设成都网页设计培训哪家好
  • 怎么查网站外链数互联网分享社区
  • 中英互译网站怎么做进京服务的链接
  • iis5.1怎么新建网站目录浏览的网站
  • 饮食中心网站建设方案四川住房和城乡建设部官方网站
  • 怎么才能百度做网站wordpress 导航插件
  • 东圃做网站公司设计效果图制作软件
  • wdcp 快速迁移网站wordpress博客主题下载
  • 国外中文网站域名注册商张家口网站网站建设
  • 万网如何建设网站聊城定制网站建设公司
  • 网站设计做微信发现界面广告设计哪个网站好
  • 网站建设专家怎么轻松搭建自己的网站
  • 社区网站建设方案ppt网站 备案 中国 名字
  • 做爰视频网站在线看北京外贸网站设计备案
  • 罗湖网站建设的公司哪家好景安怎么把网站做别名
  • 达州设计公司海城整站优化
  • 桐城做淘宝店铺网站公司东莞优化网页关键词
  • 企业网站公告怎么做凡科模板建站
  • 松岗网站开发网站优化排名价格
  • 百度怎么把自己网站展现在百度注册功能网站建设
  • 做网站好公司哈尔滨网络优化公司