diff --git a/brightcove.admin.inc b/brightcove.admin.inc
index 6caef7f..1d5817e 100644
--- a/brightcove.admin.inc
+++ b/brightcove.admin.inc
@@ -257,24 +257,21 @@ function brightcove_admin_players() {
     t('Player Key'),
     array(
       'data' => t('Operations'),
-      'colspan' => 2,
+      'colspan' => 3,
     ),
   );
 
   $rows = array();
   foreach ($players as $player) {
+    $default = _brightcove_player_is_default($player);
     $rows[] = array(
       check_plain($player->name),
       check_plain($player->player_id),
       check_plain($player->player_key),
-      _brightcove_player_is_default($player) ?
-        t('Default') :
-        l(t('Set default'), 'admin/config/media/brightcove/players/' .
-          urlencode($player->name) . '/setdefault'),
-        l(t('Edit'), 'admin/config/media/brightcove/players/' .
-          urlencode($player->name) . '/edit'),
-        l(t('Delete'), 'admin/config/media/brightcove/players/' .
-          urlencode($player->name) . '/delete'),
+      $default ?
+        t('Default') : l(t('Set default'), 'admin/config/media/brightcove/players/' . $player->pid . '/setdefault'),
+      l(t('Edit'), 'admin/config/media/brightcove/players/' . $player->pid . '/edit'),
+      $default ? '' : l(t('Delete'), 'admin/config/media/brightcove/players/' . $player->pid .  '/delete'),
     );
   }
 
@@ -287,9 +284,7 @@ function brightcove_admin_players() {
 
 function _brightcove_player_is_default($player) {
   $ret = 1;
-
-  $ret &= (int) (variable_get('brightcove_player') === $player->player_id);
-  $ret &= (int) (variable_get('brightcove_player_key') === $player->player_key);
+  $ret &= (int) (variable_get('brightcove_player_pid') == $player->pid);
 
   return (bool) $ret;
 }
@@ -298,6 +293,12 @@ function brightcove_player_editor_form($form, &$form_state, $player = NULL) {
   if (!$player) {
     $player = new stdClass();
   }
+  else {
+    $form['pid'] = array(
+      '#type' => 'hidden',
+      '#value' => $player->pid,
+    );
+  }
 
   $titles = array(
     'name' => 'Name',
@@ -335,9 +336,9 @@ function brightcove_player_editor_form_submit($form, &$form_state) {
 }
 
 function brightcove_player_delete_form($form, &$form_state, $player) {
-  $form['player_name'] = array(
+  $form['pid'] = array(
     '#type' => 'value',
-    '#value' => $player->name,
+    '#value' => $player->pid,
   );
 
   return confirm_form($form,
@@ -348,14 +349,14 @@ function brightcove_player_delete_form($form, &$form_state, $player) {
 }
 
 function brightcove_player_delete_form_submit($form, &$form_state) {
-  brightcove_player_delete($form_state['values']['player_name']);
+  brightcove_player_delete($form_state['values']['pid']);
   $form_state['redirect'] = 'admin/config/media/brightcove/players';
 }
 
 function brightcove_player_setdefault_form($form, &$form_state, $player) {
-  $form['player_name'] = array(
+  $form['pid'] = array(
     '#type' => 'value',
-    '#value' => $player->name,
+    '#value' => $player->pid,
   );
 
   return confirm_form($form,
@@ -366,8 +367,6 @@ function brightcove_player_setdefault_form($form, &$form_state, $player) {
 }
 
 function brightcove_player_setdefault_form_submit($form, &$form_state) {
-  $player = brightcove_player_load($form_state['values']['player_name']);
-  variable_set('brightcove_player', $player->player_id);
-  variable_set('brightcove_player_key', $player->player_key);
+  variable_set('brightcove_player_pid', $form_state['values']['pid']);
   $form_state['redirect'] = 'admin/config/media/brightcove/players';
 }
diff --git a/brightcove.install b/brightcove.install
index 61c0b1a..b997e10 100644
--- a/brightcove.install
+++ b/brightcove.install
@@ -14,6 +14,11 @@ function brightcove_schema() {
   $schema['brightcove_player'] = array(
     'description' => 'Stores brightcove players.',
     'fields' => array(
+      'pid' => array(
+        'type' => 'serial',
+        'not null' => TRUE,
+        'unsigned' => TRUE,
+      ),
       'name' => array(
         'type' => 'varchar',
         'length' => 255,
@@ -30,7 +35,7 @@ function brightcove_schema() {
         'not null' => TRUE,
       ),
     ),
-    'primary key' => array('name'),
+    'primary key' => array('pid'),
   );
 
   return $schema;
@@ -83,6 +88,20 @@ function brightcove_update_7002() {
 }
 
 /**
+ * Create individual primary key for players.
+ */
+function brightcove_update_7003() {
+  $spec = array(
+    'type' => 'serial',
+    'unsigned' => TRUE,
+    'not null' => TRUE,
+  );
+
+  db_drop_primary_key('brightcove_player');
+  db_add_field('brightcove_player', 'pid', $spec, array('primary key' => array('pid')));
+}
+
+/**
  * Implements hook_requirements().
  */
 function brightcove_requirements() {
@@ -133,8 +152,7 @@ function brightcove_uninstall() {
   variable_del('brightcove_encode_to');
   variable_del('brightcove_mapi_path');
   variable_del('brightcove_player');
-  variable_del('brightcove_player_key');
-  variable_del('brightcove_player_key');
+  variable_del('brightcove_player_pid');
   variable_del('brightcove_player_key');
   variable_del('brightcove_preserve_source_rendition');
   variable_del('brightcove_read_api_key');
diff --git a/brightcove.module b/brightcove.module
index 9438596..bacba52 100644
--- a/brightcove.module
+++ b/brightcove.module
@@ -493,10 +493,10 @@ function brightcove_verify_tokens($read_token = NULL, $write_token = NULL) {
   return array($read, $write);
 }
 
-function brightcove_player_load($name) {
-  return db_query('SELECT * FROM {brightcove_player} WHERE name = :name',
+function brightcove_player_load($pid) {
+  return db_query('SELECT * FROM {brightcove_player} WHERE pid = :pid',
     array(
-      ':name' => $name,
+      ':pid' => $pid,
     ))->fetch();
 }
 
@@ -506,24 +506,34 @@ function brightcove_player_load_all() {
 }
 
 function brightcove_player_list() {
-  return db_query('SELECT name FROM {brightcove_player} ORDER BY name')
-    ->fetchAllKeyed(0, 0);
+  return db_query('SELECT pid, name FROM {brightcove_player} ORDER BY name')
+    ->fetchAllKeyed(0, 1);
 }
 
 function brightcove_player_save($player) {
-  return db_merge('brightcove_player')
-    ->key(array(
-      'name' => $player->name,
-    ))
-    ->fields(array(
-      'player_id' => $player->player_id,
-      'player_key' => $player->player_key,
-    ))
-    ->execute();
+  if (empty($player->pid)) {
+    return db_insert('brightcove_player')
+      ->fields(array(
+        'name' => $player->name,
+        'player_id' => $player->player_id,
+        'player_key' => $player->player_key,
+      ))
+      ->execute();
+  }
+  else {
+    return db_update('brightcove_player')
+      ->fields(array(
+        'name' => $player->name,
+        'player_id' => $player->player_id,
+        'player_key' => $player->player_key,
+      ))
+      ->condition('pid', $player->pid)
+      ->execute();
+  }
 }
 
-function brightcove_player_delete($name) {
+function brightcove_player_delete($pid) {
   return db_delete('brightcove_player')
-    ->condition('name', $name)
+    ->condition('pid', $pid)
     ->execute();
 }
diff --git a/brightcove_field/brightcove_field.module b/brightcove_field/brightcove_field.module
index 951bf7e..0d32b5e 100644
--- a/brightcove_field/brightcove_field.module
+++ b/brightcove_field/brightcove_field.module
@@ -1645,10 +1645,13 @@ function brightcove_field_get_value($instance, $stored) {
   if ($stored) {
     return $stored;
   }
-
   if (!empty($instance['settings']['brightcove_player'])) {
     return $instance['settings']['brightcove_player'];
   }
-
+  // If no player is set to the content and the BC video field,
+  // try to get the global default player.
+  elseif($pid = variable_get('brightcove_player_pid')) {
+    return $pid;
+  }
   return NULL;
 }
