diff --git a/video.migrate.inc b/video.migrate.inc
new file mode 100644
index 0000000..3674b8b
--- /dev/null
+++ b/video.migrate.inc
@@ -0,0 +1,95 @@
+<?php
+
+/**
+ * @file
+ * Support for migration into Video fields.
+ */
+
+class VideoMigrateFieldHandler extends MigrateFileFieldBaseHandler {
+  public function __construct() {
+    $this->registerTypes(array('video'));
+  }
+
+  /**
+   * Implementation of MigrateFieldHandler::fields().
+   * Note that file and image fields support slightly different field lists.
+   *
+   * @param $type
+   *  The file field type - 'file' or 'image'
+   * @param $parent_field
+   *  Name of the parent field.
+   * @param Migration $migration
+   *  The migration context for the parent field. We can look at the mappings
+   *  and determine which subfields are relevant.
+   * @return array
+   */
+  public function fields($type, $parent_field, $migration = NULL) {
+    $fields = parent::fields($type, $parent_field, $migration);
+    $fields += array(
+      'bypass_autoconversion' => t('Subfield: bypass auto conversion of video, i.e. don’t transcode'), //Values: 1 (default) or 0
+      'thumbnail' => t('Subfield: File to be used as the video thumbnail'),
+    );
+    return $fields;
+  }
+
+  /**
+   * Implementation of MigrateFileFieldBaseHandler::buildFieldArray().
+   */
+  protected function buildFieldArray($field_array, $arguments, $delta) {
+    if (isset($arguments['bypass_autoconversion'])) {
+      $field_array['bypass_autoconversion'] = $arguments['bypass_autoconversion'];
+    }
+    else {
+      // Default value is 1, which bypasses auto conversion
+      $field_array['bypass_autoconversion'] = 1;
+    }
+    if (isset($arguments['thumbnail'])) {
+      $field_array['thumbnail'] = $arguments['thumbnail'];
+    }
+
+    if (isset($arguments['playablefiles'])) {
+      $field_array['playablefiles'] = $arguments['playablefiles'];
+    }
+    return $field_array;
+  }
+
+  public function prepare($entity, array $field_info, array $instance, array $values) {
+    if (isset($values['arguments'])) {
+      $arguments = $values['arguments'];
+      unset($values['arguments']);
+    }
+    else {
+      $arguments = array();
+    }
+    if (isset($arguments['thumbnail'])) {
+      $thumbnail = $arguments['thumbnail'];
+      unset($arguments['thumbnail']);
+    }
+
+    $migration = Migration::currentMigration();
+    $destination = $migration->getDestination();
+    $language = $this->getFieldLanguage($entity, $field_info, $arguments);
+
+    // Setup the standard Field API array for saving.
+    $delta = 0;
+    foreach ($values as $value) {
+      $item = array();
+      if (isset($thumbnail[$delta])) {
+        $arguments['thumbnail'] = $thumbnail[$delta];
+      }
+      else {
+        unset($arguments['thumbnail']);
+      }
+
+      // Put the file into the video field
+      $field_array = array(
+        'fid' => $value,
+      );
+      $return[$language][] = $this->buildFieldArray($field_array, $arguments, $delta);
+
+      $delta++;
+    }
+
+    return isset($return) ? $return : NULL;
+  }
+}
diff --git a/video.module b/video.module
index 865c8e8..8cf475a 100644
--- a/video.module
+++ b/video.module
@@ -293,6 +293,13 @@ function video_features_api() {
 }
 
 /**
+ * Implements hook_migrate_api().
+ */
+function video_migrate_api() {
+  return array('api' => 2);
+}
+
+/**
  * Implements hook_views_api().
  */
 function video_views_api() {
