maitrungduc1410 / react-native-video-trim

Video trimmer for React Native App
MIT License
63 stars 24 forks source link

retriever.setDataSource(source) not working on older phones #80

Open LianVyv opened 3 weeks ago

LianVyv commented 3 weeks ago

@maitrungduc1410 I have came across this issue where my one Huawei phone is not working when setting the retriever.setDataSource(source). It keeps returning a null.

I have ended up fixing it by doing the following

public static MediaMetadataRetriever getMediaMetadataRetriever(String source) {
    MediaMetadataRetriever retriever = new MediaMetadataRetriever();
    try {
      if (source.startsWith("http://") || source.startsWith("https://")) {
        retriever.setDataSource(source, new HashMap<>());
      } else {
        try (FileInputStream fis = new FileInputStream(new File(source.replace("file://", "")))) {
            retriever.setDataSource(fis.getFD());
        } catch (IOException e) {
            retriever.release();
            Log.e(TAG, "Error setting data source from file descriptor", e);
            return null;
        }
      }
      return retriever;
    } catch (Exception e) {
      Log.e(TAG, "Error setting data source", e);
      try {
        retriever.release();
      } catch (Exception ee) {
        Log.e(TAG, "Error releasing retriever", ee);
      }
      return null;
    }
  }

I have tested on my other Android phones and it seems to work fine. But not sure what impact that has on other phones. I also realised if I run

 File file = new File(mSourceUri.toString());
      if (!file.exists()) {
           map.putString("File check", "file not found");       
      }

Then I always get File not found.

So I have had to add a .replace("file://", "")

Can I create a PR for this or you see any problems?

maitrungduc1410 commented 3 weeks ago

what is your phone version? (API version)

LianVyv commented 3 weeks ago

I think it is Android Version 12

IMG_2214

maitrungduc1410 commented 3 weeks ago

you should search for "software information" in Settings, it should show something like Android version

LianVyv commented 3 weeks ago

Android version 10(Q)

maitrungduc1410 commented 3 weeks ago

hi @LianVyv in this case the catch block will run, can you check what do you have in the error? (try to get stacktrace, message,...)

Like this:

public static MediaMetadataRetriever getMediaMetadataRetriever(String source) {
  MediaMetadataRetriever retriever = new MediaMetadataRetriever();
  try {
    if (source.startsWith("http://") || source.startsWith("https://")) {
      retriever.setDataSource(source, new HashMap<>());
    } else {
      retriever.setDataSource(source);
    }
    return retriever;
  } catch (Exception e) {
    Log.e(TAG, "Error setting data source");
    Log.e(TAG, e.printStackTrace());
    Log.e(TAG, e.getMessage());
    try {
      retriever.release();
    } catch (Exception ee) {
      Log.e(TAG, "Error releasing retriever", ee);
    }
    return null;
  }
}
LianVyv commented 2 weeks ago

@maitrungduc1410 I had to travel this week. I will get back to you on this next week when I'm back.

bilalkhan-tech commented 3 days ago

this package crash android app when select the video more than 2 minute and 10 seconds without showing any error and some devices show storage permission denied

maitrungduc1410 commented 2 days ago

hi @bilalkhan-tech can you please check on Android studio -> logcat, and see what's the error printed at the time it's crashed?

bilalkhan-tech commented 1 day ago

Yes I have checked but there is no error on the console

On Sat, Nov 30, 2024, 9:40 PM Duc Trung Mai @.***> wrote:

hi @bilalkhan-tech https://github.com/bilalkhan-tech can you please check on Android studio -> logcat, and see what's the error printed at the time it's crashed?

— Reply to this email directly, view it on GitHub https://github.com/maitrungduc1410/react-native-video-trim/issues/80#issuecomment-2509030301, or unsubscribe https://github.com/notifications/unsubscribe-auth/AOZXDZCZS5EUZSUBYEZGUIL2DHS57AVCNFSM6AAAAABRQEBQPOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDKMBZGAZTAMZQGE . You are receiving this because you were mentioned.Message ID: @.***>