"Flexible Field" for Drupal
I have done this in the past by adding a drop down that gives the user an option of selecting "embed" or "upload"  then use the Conditional fields module to show or hide the required field.