diff --git a/src/com/android/gallery3d/app/VideoUtils.java b/src/com/android/gallery3d/app/VideoUtils.java
index 4f551a6..b5851a7 100755
--- a/src/com/android/gallery3d/app/VideoUtils.java
+++ b/src/com/android/gallery3d/app/VideoUtils.java
@@ -179,6 +179,11 @@
         retrieverSrc.setDataSource(srcPath);
         String degreesString = retrieverSrc.extractMetadata(
                 MediaMetadataRetriever.METADATA_KEY_VIDEO_ROTATION);
+        try {
+            retrieverSrc.release();
+        } catch (IOException e) {
+            // Ignore errors occurred while releasing the MediaMetadataRetriever.
+        }
         if (degreesString != null) {
             int degrees = Integer.parseInt(degreesString);
             if (degrees >= 0) {
diff --git a/src/com/android/gallery3d/util/SaveVideoFileUtils.java b/src/com/android/gallery3d/util/SaveVideoFileUtils.java
index bef75ba..7c6ba5e 100644
--- a/src/com/android/gallery3d/util/SaveVideoFileUtils.java
+++ b/src/com/android/gallery3d/util/SaveVideoFileUtils.java
@@ -28,6 +28,7 @@
 import com.android.gallery3d.filtershow.tools.SaveImage.ContentResolverQueryCallback;
 
 import java.io.File;
+import java.io.IOException;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 
@@ -101,7 +102,7 @@
         values.put(Video.Media.DATE_ADDED, nowInSec);
         values.put(Video.Media.DATA, mDstFileInfo.mFile.getAbsolutePath());
         values.put(Video.Media.SIZE, mDstFileInfo.mFile.length());
-        int durationMs = retriveVideoDurationMs(mDstFileInfo.mFile.getPath());
+        int durationMs = retrieveVideoDurationMs(mDstFileInfo.mFile.getPath());
         values.put(Video.Media.DURATION, durationMs);
         // Copy the data taken and location info from src.
         String[] projection = new String[] {
@@ -137,7 +138,7 @@
         return contentResolver.insert(Video.Media.EXTERNAL_CONTENT_URI, values);
     }
 
-    public static int retriveVideoDurationMs(String path) {
+    private static int retrieveVideoDurationMs(String path) {
         int durationMs = 0;
         // Calculate the duration of the destination file.
         MediaMetadataRetriever retriever = new MediaMetadataRetriever();
@@ -147,7 +148,11 @@
         if (duration != null) {
             durationMs = Integer.parseInt(duration);
         }
-        retriever.release();
+        try {
+            retriever.release();
+        } catch (IOException e) {
+            // Ignore errors occurred while releasing the retriever.
+        }
         return durationMs;
     }
 
diff --git a/src/com/android/gallery3d/video/VideoSnapshotExt.java b/src/com/android/gallery3d/video/VideoSnapshotExt.java
index 1dc87b4..0d75a7a 100644
--- a/src/com/android/gallery3d/video/VideoSnapshotExt.java
+++ b/src/com/android/gallery3d/video/VideoSnapshotExt.java
@@ -168,7 +168,11 @@
                 if (bitmap == null) {
                     Log.w(TAG, "frame cannot be retrieved. ");
                 } else {
-                    retriever.release();
+                    try {
+                        retriever.release();
+                    } catch (IOException e) {
+                        // Ignore errors occurred while releasing the retriever.
+                    }
                     if (DEBUG) {
                         Log.d(TAG, "retriever get frame resolution : " +
                                 bitmap.getHeight() + "x" + bitmap.getWidth());
@@ -177,7 +181,11 @@
                     return bitmap;
                 }
             }
-            retriever.release();
+            try {
+                retriever.release();
+            } catch (IOException e) {
+                // Ignore errors occurred while releasing the retriever.
+            }
             return null;
         }
 
