在某些Android设备中为 mp2 和 MPEG .bwf 文件提取元信息时遇到问题。
每当我尝试提取文件的元信息时,APP就会崩溃。
我已经使用 MediaExtractor 类提取文件的元数据(例如,比特率,哑剧,时长,频道数,采样率等)。
但是在特定设备上,例如mp2和MPEG .bwf格式文件失败。
Samsung S6, Android 7.0
Samsung Galaxy J3 (2016), Android 5.1.1
Samsung TAB A6, Android 5.1.1
Samsung Galaxy S5, Android 6.0.1
Redmi Note 5
很少有设备能够成功提取元信息。
随着深入,我了解MediaExtractor使用 libstagefright 库中包含的 NUMediaExtractor 类。
这是堆栈跟踪:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.package.app, PID: 25198
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.app/com.app.Activity}: java.lang.IllegalArgumentException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2927)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2988)
at android.app.ActivityThread.-wrap14(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1631)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6682)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)
Caused by: java.lang.IllegalArgumentException
at android.media.MediaExtractor.getTrackFormatNative(Native Method)
at android.media.MediaExtractor.getTrackFormat(MediaExtractor.java:446)
at app.Activity.readMethaInformation(Activity.java:491)
at app.Activity.onCreate(Activity.java:157)
at android.app.Activity.performCreate(Activity.java:6942)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1126)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2880)
谁能知道为什么在特定设备中出现libstagefright提取问题?由于该库是特定于操作系统的,可以替换吗?除此之外,还有其他选择吗?