Content Field Type For Video, Images and Text
I think that the best solution is to use Conditional Fields module.
You can manage dependencies between fields. So you should have one field type and all type fields separately and display them depend to type field.