浏览代码

update audio decoder

i2edu 4 年之前
父节点
当前提交
68cb55711b
共有 1 个文件被更改,包括 30 次插入2 次删除
  1. 30 2
      android/src/main/kotlin/cn/i2edu/dubbing_lib/audioUtils/AndroidAudioDecoder.java

+ 30 - 2
android/src/main/kotlin/cn/i2edu/dubbing_lib/audioUtils/AndroidAudioDecoder.java

@@ -4,8 +4,12 @@ import android.media.MediaCodec;
 import android.media.MediaExtractor;
 import android.media.MediaFormat;
 import android.util.Log;
+
 import cn.i2edu.dubbing_lib.audioUtils.compose.CommonFunction;
 
+import java.io.File;
+import java.io.FileDescriptor;
+import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.nio.ByteBuffer;
@@ -22,13 +26,37 @@ public class AndroidAudioDecoder extends AudioDecoder {
         super(encodefile);
     }
 
+    private MediaExtractor getMediaExtractor() throws IOException {
+        MediaExtractor extractor = new MediaExtractor();
+        File file = new File(mEncodeFile);
+        FileInputStream fis = null;
+        try {
+            fis = new FileInputStream(file);
+            FileDescriptor fd = fis.getFD();
+            extractor.setDataSource(fd);
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            //Release stuff
+            extractor.release();
+            try {
+                if (fis != null) {
+                    fis.close();
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+//        extractor.setDataSource(mEncodeFile);
+        return extractor;
+    }
+
     @Override
     public RawAudioInfo decodeToFile(String outFile) throws IOException {
 
         long beginTime = System.currentTimeMillis();
 
-        MediaExtractor extractor = new MediaExtractor();
-        extractor.setDataSource(mEncodeFile);
+        MediaExtractor extractor = getMediaExtractor();
 
         MediaFormat mediaFormat = null;
         for (int i = 0; i < extractor.getTrackCount(); i++) {