如何获取Chrome浏览器底层的WebRTC日志

Posted Data-Mining

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何获取Chrome浏览器底层的WebRTC日志相关的知识,希望对你有一定的参考价值。

目录

前言

正文

1. 答案

2. 获取日志的方式

3. 参数分析

4. 重要的事情

5. 日志实例

6. native客户端获取日志

(1)Android

(2)iOS

(3)Mac OS

(4)Windows

(5)Linux/其他平台

结论


前言

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 Android开启底层日志

webrtc - 视频得到blob,但它仍然是黑色的

使 WebRtc 应用程序的用户能够通过 javascript 下载 webrtc 日志

WebRTC onicecandidate 不会在 chrome for android 上触发,但适用于所有其他浏览器,包括适用于 android 的 firefox

WebRTC Native M96数据统计-- 使用PeerConnection::GetStats获取WebRTC实时统计信息

如何将 Firefox 连接到 Chrome 以通过 WebRTC 传输 h264?