RTC event logs can be enabled to capture in-depth inpformation about sent and received packets and the internal state of some WebRTC components. The logs are useful to understand network behavior and to debug issues around connectivity, bandwidth estimation and audio jitter buffers.
The contents include:
No guarantees are made on the wire format, and the format may change without prior notice. To maintain compatibility with past and future formats, analysis tools should be built on top of the provided rtc_event_log_parser.h
In particular, an analysis tool should not read the log as a protobuf.
Since the logs contain a substantial amount of data, it is usually convenient to get an overview by visualizing them as a set of plots. Use the command:
out/Default/event_log_visualizer /path/to/log_file | python
This visualization requires matplotlib to be installed. The tool is capable of producing a substantial number of plots, of which only a handful are generated by default. You can select which plots are generated though the --plot=
command line argument. For example, the command
out/Default/event_log_visualizer \ --plot=incoming_packet_sizes,incoming_stream_bitrate \ /path/to/log_file | python
plots the sizes of incoming packets and the bitrate per incoming stream.
You can get a full list of options for the --plot
argument through
out/Default/event_log_visualizer --list_plots /path/to/log_file
You can also synchronize the x-axis between all plots (so zooming or panning in one plot affects all of them), by adding the command line argument --shared_xaxis
.
If you know which format version the log file uses, you can view the raw contents as text. For version 1, you can use the command
out/Default/protoc --decode webrtc.rtclog.EventStream \ ./logging/rtc_event_log/rtc_event_log.proto < /path/to/log_file
Similarly, you can use
out/Default/protoc --decode webrtc.rtclog2.EventStream \ ./logging/rtc_event_log/rtc_event_log2.proto < /path/to/log_file
for logs that use version 2. However, note that not all of the contents will be human readable. Some fields are based on the raw RTP format or may be encoded as deltas relative to previous fields. Such fields will be printed as a list of bytes.