I'm not sure about medium quality videos, but I know that a video wrapper like SublimeVideo has data-quality
attribute that can allow switching between the two different versions.
If you have your own wrapper, you could use something like this to test the bandwidth and then trigger the appropriate source.
http://docs.sublimevideo.net/hd-switching
<video class="sublime" width="640" height="360" title="Midnight Sun" preload="none">
<source src="https://cdn.sublimevideo.net/vpa/ms_360p.mp4" />
<source src="https://cdn.sublimevideo.net/vpa/ms_720p.mp4" data-quality="hd" />
<source src="https://cdn.sublimevideo.net/vpa/ms_360p.webm" />
<source src="https://cdn.sublimevideo.net/vpa/ms_720p.webm" data-quality="hd" />
</video>
If you're worried about the video not being available, when you include the sources, you could check to see if the file exists.
<video class="sublime" width="640" height="360" title="Midnight Sun" preload="none">
<% if File.exist?(@video.file(:low_mp4)) %>
<source src="https://cdn.sublimevideo.net/vpa/ms_360p.mp4" />
<% end %>
<% if File.exist?(@video.file(:high_mp4)) %>
<source src="https://cdn.sublimevideo.net/vpa/ms_720p.mp4" data-quality="hd" />
<% end %>
<source src="https://cdn.sublimevideo.net/vpa/ms_360p.webm" />
<source src="https://cdn.sublimevideo.net/vpa/ms_720p.webm" data-quality="hd" />
</video>