如何获取Chrome浏览器底层的WebRTC日志
Posted Data-Mining
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何获取Chrome浏览器底层的WebRTC日志相关的知识,希望对你有一定的参考价值。
目录
前言
WebRTC 是一个非常优秀的跨平台的音视频通讯方案,但是,在使用过程中依然无法避免遇到各种各样的问题,因此就需要借助日志分析原因。对于native客户端,不管是桌面端还是移动端都可以很容易地拿到日志,毕竟大不了重新编译一遍。但是 Web 页面的话就有一个问题,比如 Chrome 浏览器,我们都知道在 Chrome 上音视频通讯使用的也是 WebRTC,如果为了拿到日志,重新编译 Chrome 肯定是不可取的,毕竟 Chrome 浏览器是人家谷歌的。那么问题来了,在开发测试或者线上问题排查时,我们可以拿到 Chrome 浏览器对应的 WebRTC 日志吗?
正文
1. 答案
先剧透一下,刚才问题的答案是肯定的。
2. 获取日志的方式
我们可以通过 Chrome 的启动参数 --enable-logging 来控制 WebRTC 日志功能的开启,日志文件会保存到用户据数据目录中,参考位置如下:
C:\\Users\\用户名\\AppData\\Local\\Google\\Chrome\\User Data\\chrome_debug.log
具体的执行命令如下:
"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe" --enable-logging --v=1 --vmodule=*/webrtc/*=1
3. 参数分析
接下来介绍一下上面的几个命令行参数:
参数0:"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe",chrome在本机的安装命令;
参数1:--enable-logging,控制WebRTC日志开启;
参数2:--v=1,指定输出到文件;
参数3:--vmodule=*/webrtc/*=1,指定打印日志的模块,这里是WebRTC。
4. 重要的事情
注意:重要的事情说三遍,
chrome浏览器一定要重启!
chrome浏览器一定要重启!
chrome浏览器一定要重启!
5. 日志实例
部分日志内容如下:
[10936:8880:0916/094523.355:VERBOSE1:webrtc_logging.cc(32)] [WA]RWADI::RendererWebAudioDeviceImpl => (hardware_params=[format: PCM_LOW_LATENCY, channel_layout: 3, channels: 2, sample_rate: 48000, frames_per_buffer: 512, effects: 0, mic_positions: , hw_capabilities: min_frames_per_buffer: 512, max_frames_per_buffer: 512, bitstream_formats:0])
[10936:8880:0916/094523.355:VERBOSE1:webrtc_logging.cc(32)] [WA]RWADI::RendererWebAudioDeviceImpl => (sink_params=[format: PCM_LOW_LATENCY, channel_layout: 3, channels: 2, sample_rate: 48000, frames_per_buffer: 512, effects: 0, mic_positions: ])
[10936:8880:0916/094523.355:VERBOSE1:webrtc_logging.cc(32)] [WA]AD::AudioDestination => (device callback buffer size=512 frames) [state=stopped]
[10936:8880:0916/094523.355:VERBOSE1:webrtc_logging.cc(32)] [WA]AD::AudioDestination => (device sample rate=48000 Hz) [state=stopped]
[10936:8880:0916/094523.355:VERBOSE1:webrtc_logging.cc(32)] [WA]AD::AudioDestination => (no resampling: context sample rate set to 48000 Hz) [state=stopped]
[10936:8880:0916/094523.355:VERBOSE1:webrtc_logging.cc(32)] [WA]AC::AudioContext => (base latency=0.011 seconds)) [state=suspended]
[10936:8880:0916/094523.356:VERBOSE1:webrtc_logging.cc(32)] [WA]AC::StartRendering [state=suspended]
[10936:8880:0916/094523.356:VERBOSE1:webrtc_logging.cc(32)] [WA]AD::Start [state=stopped]
[10936:8880:0916/094523.356:VERBOSE1:webrtc_logging.cc(32)] [WA]RWADI::Start
截图如下:
6. native客户端获取日志
接下来,也介绍一下native客户端日志获取的方式吧。
总的来说,打开native客户端底层日志,两种方式,一是编译Debug版本的WebRTC,自动就会输出所需的日志;二是在上层调用 rtc::LogMessage::LogToDebug(rtc::LS_INFO) 方法打开日志输出级别。
(1)android
adb logcat -s "libjingle"
也可以使用如下语句在非Debug模式下打开日志输出:
Logging.enableLogToDebugOutput(Logging.Severity.LS_INFO)
(2)ios
iOS默认仅打印到标准错误输出,如果想要保存到文件中,需要使用 RTCFileLogger。
(3)Mac OS
对于Debug包的WebRTC(此时,NDEBUG没有定义),日志会打印到标准错误输出,如果是Release包,可以通过设置logStderr=true。但是如果想要保存日志到文件中,需要使用 RTCFileLogger。
(4)Windows
日志会默认打印到debugger和标准错误输出。
(5)Linux/其他平台
日志会打印到标准错误输出。
结论
好了,本文介绍了各个端获取 WebRTC 日志的方法,特别是在 Chrome 浏览器上获取日志的方式进行了重点介绍。对于从事研发工作的小伙伴来说,日志真的很重要。特别是自己最近在查浏览器端的一些问题,所以整理这篇文章,希望可以帮到大家。
作者简介:😄大家好,我是 Data-Mining(liuzhen007),是一名典型的音视频技术爱好者,前后就职于传统广电巨头和音视频互联网公司,具有丰富的音视频直播和点播相关经验,对 WebRTC、FFmpeg 和 Electron 有非常深入的了解。同时也是 CSDN 博客专家(博客之星)、华为云享专家(共创编辑、十佳博主)、51CTO社区编辑、InfoQ 签约作者,欢迎关注我分享更多干货!😄
以上是关于如何获取Chrome浏览器底层的WebRTC日志的主要内容,如果未能解决你的问题,请参考以下文章
使 WebRtc 应用程序的用户能够通过 javascript 下载 webrtc 日志
WebRTC onicecandidate 不会在 chrome for android 上触发,但适用于所有其他浏览器,包括适用于 android 的 firefox
WebRTC Native M96数据统计-- 使用PeerConnection::GetStats获取WebRTC实时统计信息