ffmpeg-kit icon indicating copy to clipboard operation
ffmpeg-kit copied to clipboard

Android | Thumbnail generation for HLS video stream

Open ashwinkhadgi opened this issue 1 year ago • 0 comments

I am developing a feature in my Android application where I want to generate the video thumbnail of HLS video. I tried to generate the thumbnail using Android native MediaMetadataRetriever but it failed for HLS video so that is the reason I have decided to use FFMpeg and the only feature I want to use is to generate thumbnails for HLS videos.

I have tried adding the gradle dependency into my app and it's working as expected. implementation("com.arthenica:ffmpeg-kit-https:6.0-2.LTS")

The problem here is that the above dependency increases my APK size tremendously, previously my APK size was approximately 30 MB and after adding the above dependency the apk size increases to 130 MB.

In order to reduce the APK size I have decided to build and generate the .aar file manually and include only those architecture and libraries which are must. I don't have much knowledge in generating the .aar file but after following the documentation I generated it successfully and added it to my project but it crashed the app start.

Now based on my requirement can you please suggest what all libraries should I include in the aar build process so that the apk size doesn't increase and can generate the thumbnail from HLS video. ./android.sh --lts --enable-gpl --enable-gmp --enable-x264 --enable-x265 --enable-xvidcore --disable-arm-v7a-neon --disable-arm-v7a --disable-arm-v7a-neon --disable-arm64-v8a --disable-x86

Apologies from my side as I am not sure if this is a feature request or bug. Crash: java.lang.Error: FFmpegKit failed to start on brand: google, model: Pixel 6, device: oriole, api level: 34, abis: arm64-v8a armeabi-v7a armeabi, 32bit abis: armeabi-v7a armeabi, 64bit abis: arm64-v8a. at com.arthenica.ffmpegkit.NativeLoader.loadLibrary(NativeLoader.java:50) at com.arthenica.ffmpegkit.NativeLoader.loadFFmpegKitAbiDetect(NativeLoader.java:130) at com.arthenica.ffmpegkit.AbiDetect.(AbiDetect.java:30) at com.arthenica.ffmpegkit.NativeLoader.loadNativeAbi(NativeLoader.java:65) at com.arthenica.ffmpegkit.NativeLoader.loadFFmpegKit(NativeLoader.java:173) at com.arthenica.ffmpegkit.FFmpegKitConfig.(FFmpegKitConfig.java:145) at com.arthenica.ffmpegkit.FFmpegKit.execute(FFmpegKit.java:167) at com.example.videoplayertest.Thumbnail.generateThumbnailFromHls(Thumbnail.kt:25) at com.example.videoplayertest.Thumbnail.test(Thumbnail.kt:16) at com.example.videoplayertest.ComposableSingletons$MainActivityKt$lambda-1$1$1$1.invokeSuspend(MainActivity.kt:56) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108) at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:115) at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:103) at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:793) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:697) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:684) Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [androidx.compose.ui.platform.MotionDurationScaleImpl@8931557, androidx.compose.runtime.BroadcastFrameClock@f6ac844, StandaloneCoroutine{Cancelling}@2142d2d, Dispatchers.IO] Caused by: java.lang.UnsatisfiedLinkError: dlopen failed: library "libffmpegkit_abidetect.so" not found at java.lang.Runtime.loadLibrary0(Runtime.java:1082) at java.lang.Runtime.loadLibrary0(Runtime.java:1003) at java.lang.System.loadLibrary(System.java:1661) at com.arthenica.ffmpegkit.NativeLoader.loadLibrary(NativeLoader.java:48)

ashwinkhadgi avatar Jun 06 '24 05:06 ashwinkhadgi