According to the Charles Proxy website, “Charles is an HTTP proxy / HTTP monitor / Reverse Proxy that enables a developer to view all of the HTTP and SSL / HTTPS traffic between their machine and the Internet. This includes requests, responses and the HTTP headers (which contain the cookies and caching information).” From my perspective, Charles is an affordable ($50) highly-capable tool that I just started using for two specific features.
First is the ability to set an artificial bandwidth throttle for testing. As an example, I’ve heard for years that VBR-encoded video delivers a lower quality of experience (QoE) than CBR under constrained playback conditions. However, my cable broadband connection delivers 85 Mbps download speed, so how exactly do I test under constrained playback conditions? Well, as you can see in Figure 1, Charles lets you set a bandwidth limit to simulate these constraints. Apply the limit and test with Speedtest.net, and you can verify the throttling.
Figure 1. Setting a bandwidth limit (or throttle) in Charles.
The second feature is the data displayed in the Charles session window, shown in Figure 2. In the figure, I’m comparing the segments retrieved during the HLS playback of a VBR-encoded stream (on the left) and a CBR-encoded stream (on the right). By reviewing the segments downloaded during playback, you can instantly see that VBR encoding resulted in many more stream switches, plus a generally lower quality of video delivered to the viewer (many fragments of the 1500 kbps stream in Layer 3 rather than the mostly 2100 kbps segments in layer 2).
Figure 2. Charles showing the fragments retrieved during VBR (left) and CBR testing. Which stream do you think delivered a superior QoE?
Couple this with the playback stoppages and audio breaks experienced during VBR playback, and not CBR playback, and you have absolute proof that VBR-encoded video delivers a lower QoE than CBR when delivered under constrained conditions. You can read all about these tests in Bitrate Control and QoE-CBR is Better.
In the meantime, if you’re looking to debug your video playback experience, check out Charles. There’s a free 30-day trial, and at $50 it’s a steal. I know I’m just touching the surface of Charles’ functionality, but these two features alone were well worth the purchase price.
Here’s a video that shows Charles in action. Click over to YouTube to watch the video in full screen.