I dunno if this helps, but try using the .prop()
function instead of attr. It may help trigger the reload. The other thing, you can use an event callback on iframes to detect when it has loaded. Since you call the api function directly after resetting the src, it probably hasn't loaded. I believe the function for that is $('#vm-player').load(function(e) { vmPlayer.api('play'); });
If that load function doesn't work, it's because jQuery's load has been known to fire twice. Once on empty, and once on the true final load. If this is the case and it causes problems for you, you may have to go into some bare js window handling. Possibly like this, but NO gaurentees document.getElementById('iFrameID').contentWindow.onload(function() {vmPlayer.api('play');});