This is definitely possible from the client-side API. If you have an embedded player you can do a quick test with these 4 lines of code and it will capture the current contents in the player:
let image = new Image();
let imgSrc = await player.snapshotAsync();
image.src = imgSrc;
document.body.appendChild(image)