diff --git a/modules/video_storage/video_storage.info b/modules/video_storage/video_storage.info
new file mode 100644
index 0000000..c385901
--- /dev/null
+++ b/modules/video_storage/video_storage.info
@@ -0,0 +1,6 @@
+name = "Video Storage"
+description = "Integrates the Storage API for more flexible file storage handling"
+package = "Media"
+dependencies[] = video
+dependencies[] = storage_core_bridge
+core = 7.x
diff --git a/modules/video_storage/video_storage.module b/modules/video_storage/video_storage.module
new file mode 100644
index 0000000..fc6c7c1
--- /dev/null
+++ b/modules/video_storage/video_storage.module
@@ -0,0 +1,146 @@
+<?php
+
+/**
+ * Implements hook_storage_core_bridge_field_types().
+ */
+function video_storage_core_bridge_field_types() {
+  return array('video');
+}
+
+/**
+ * Implements hook_field_create_field().
+ */
+function video_field_create_field(array $field) {
+  if ($field['type'] == 'video') {
+    foreach (array('converted', 'thumbnails') as $subfield) {  
+      storage_core_bridge_field_selector_create($field['field_name'] . '_' . $subfield);
+	}
+  }
+}
+
+/**
+ * Implements hook_field_delete_field().
+ */
+function video_field_delete_field(array $field) {
+  if ($field['type'] == 'video') {
+    foreach (array('converted', 'thumbnails') as $subfield) {  
+      storage_core_bridge_field_selector_destroy($field['field_name'] . '_' . $subfield);
+	}
+  }
+}
+
+/**
+ * Implements hook_stream_wrappers().
+ */
+function video_stream_wrappers() {
+  if (!module_exists('storage_core_bridge')) 
+	return;
+  $fields = variable_get('storage_core_bridge_fields', array());
+  $wrappers = array();
+
+  // Declare hidden scheme for each field that is handled by Core Bridge.
+  foreach ($fields as $field) {
+	if ($field->type != 'video')
+	  continue;	
+	foreach (array('converted', 'thumbnails') as $subfield) {
+      $wrappers[storage_core_bridge_field_scheme($field) . '-' . $subfield] = array(
+        'name' => t("Storage API selector"),
+        'class' => 'DrupalStorageStreamWrapper',
+        'description' => '',
+        'type' => STREAM_WRAPPERS_HIDDEN,
+      );
+    }
+  }
+
+  return $wrappers;
+}
+
+/**
+ * Implements hook_form_FORM_ID_alter().
+ */
+function video_form_field_ui_field_settings_form_alter(array &$form, array &$form_state) {
+
+  if (!module_exists('storage_core_bridge') || $form['field']['type']['#value'] != 'video') {
+    return;
+  }
+
+  //Weight fixes
+  $i = -6;
+  foreach ($form['field']['settings'] as $key => $val) {
+    $form['field']['settings'][$key]['#weight'] = $i;
+	$i++;
+  }
+  $form['field']['settings']['uri_scheme']['#weight'] = -10;
+  $form['field']['settings']['storage_class']['#weight'] = -9;
+  $i = -8;
+
+  // Create selectors for 'subfields'
+  foreach (array('converted', 'thumbnails') as $subfield) {
+    // Add the option to use Storage API.
+    $scheme = storage_core_bridge_field_scheme($form['field']['field_name']['#value'] . '_' . $subfield);
+    $form['field']['settings']['uri_scheme_' . $subfield]['#options'][$scheme] = t("Storage class (select below)");
+
+    // Add the class selector widget.
+    $form['field']['settings']['storage_class_' . $subfield] =
+      storage_core_bridge_field_selector($form['field']['field_name']['#value'] . '_' . $subfield)->formItem();
+
+    $form['field']['settings']['uri_scheme_' . $subfield]['#weight'] = $i;
+	$i++;
+    $form['field']['settings']['storage_class_' . $subfield]['#weight'] = $i;
+	$i++;
+  }
+  
+  $form['#submit'][] = 'video_field_ui_field_settings_form_submit';
+}
+
+function video_field_ui_field_settings_form_submit(array $form, array &$form_state) {
+  foreach (array('converted', 'thumbnails') as $subfield) {
+    storage_core_bridge_field_selector($form['field']['field_name']['#value'] . '_' . $subfield)
+      ->submit($form_state['values']['field']['settings']['storage_class_' . $subfield]);
+  }
+}
+
+/**
+ * Implements hook_form_FORM_ID_alter().
+ */
+function video_form_field_ui_field_edit_form_alter(array &$form, array &$form_state) {
+
+  if (!module_exists('storage_core_bridge') || $form['#field']['type'] != 'video') {
+    return;
+  }
+
+  //Weight fixes
+  $i = -6;
+  foreach ($form['field']['settings'] as $key => $val) {
+    $form['field']['settings'][$key]['#weight'] = $i;
+	$i++;
+  }
+  $form['field']['settings']['uri_scheme']['#weight'] = -10;
+  $form['field']['settings']['storage_class']['#weight'] = -9;
+  $i = -8;
+
+  // Create selectors for 'subfields'
+  foreach (array('converted', 'thumbnails') as $subfield) {
+    // Add the option to use Storage API.
+    $scheme = storage_core_bridge_field_scheme($form['#field']['field_name'] . '_' . $subfield);
+    $form['field']['settings']['uri_scheme_' . $subfield]['#options'][$scheme] = t("Storage class (select below)");
+
+    // Add the class selector widget.
+    $form['field']['settings']['storage_class_' . $subfield] =
+      storage_core_bridge_field_selector($form['#field']['field_name'] . '_' . $subfield)->formItem();
+
+    $form['field']['settings']['uri_scheme_' . $subfield]['#weight'] = $i;
+	$i++;
+    $form['field']['settings']['storage_class_' . $subfield]['#weight'] = $i;
+	$i++;
+  }
+  
+  $form['#submit'][] = 'video_field_ui_field_edit_form_submit';
+}
+
+function video_field_ui_field_edit_form_submit(array $form, array &$form_state) {
+  foreach (array('converted', 'thumbnails') as $subfield) {
+    storage_core_bridge_field_selector($form['#field']['field_name'] . '_' . $subfield)
+      ->submit($form_state['values']['field']['settings']['storage_class_' . $subfield]);
+  }
+}
diff --git a/video.utility.inc b/video.utility.inc
index 20665df..3d057b3 100644
--- a/video.utility.inc
+++ b/video.utility.inc
@@ -168,6 +168,16 @@ class video_utility {
     }
 
     // Try to fetch the file using http. This is much faster in the case of S3 via the Amazon S3 module
+    if (module_exists('storage_core_bridge')) {
+      $storage = storage_core_bridge_load($uri);
+	  if (!$storage->serving_container->external)
+	    $copy = drupal_realpath($storage->serving_container->settings['path'] . '/' . $storage->filename);
+	  else {
+		  //TODO: copy remote storage_api file here
+	  }
+      self::$temporaryCopies[$uri] = $copy;
+	  return $url;
+	}
     $url = file_create_url($uri);
     if ($url != $uri && ($copy = self::createTemporaryLocalCopy($url))) {
       self::$temporaryCopies[$uri] = $copy;
