How to change a file field value with entity_metadata_wrapper
You have to set the uploaded file object rather then the initial file object. Please check the return value of file_save() function.

The error explained that there is duplicate key uri, which means the code is trying to save the initial file object again.

$ewrapper-&gt;field_video-&gt;set() only accept (array) $file but not $items.

$file = file_save($file);
$file = (array) $file;
$ewrapper = entity_metadata_wrapper('node', $node);
$ewrapper-&gt;field_video-&gt;set($file);
$ewrapper-&gt;save(true);