java.lang.IllegalStateException: Failed to stop the muxer
I am using Motorola one fusion+ mobile
getting this error

` 2021-04-13 16:36:56.479 20572-21716/com.otaliastudios.transcoder.demo E/TranscodeEngine: Unexpected error while transcoding. java.lang.IllegalStateException: Failed to stop the muxer at android.media.MediaMuxer.nativeStop(Native Method) at android.media.MediaMuxer.stop(MediaMuxer.java:466) at com.otaliastudios.transcoder.sink.DefaultDataSink.stop(DefaultDataSink.java:218) at com.otaliastudios.transcoder.internal.transcode.DefaultTranscodeEngine.transcode(DefaultTranscodeEngine.kt:132) at com.otaliastudios.transcoder.internal.transcode.TranscodeEngine$Companion.transcode(TranscodeEngine.kt:48) at com.otaliastudios.transcoder.internal.transcode.TranscodeEngine.transcode(Unknown Source:2) at com.otaliastudios.transcoder.Transcoder$1.call(Transcoder.java:102) at com.otaliastudios.transcoder.Transcoder$1.call(Transcoder.java:99) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at java.lang.Thread.run(Thread.java:919) 2021-04-13 16:36:56.479 20572-21716/com.otaliastudios.transcoder.demo I/Decoder(VIDEO,3): release(): releasing codec. dequeuedInputs=0 dequeuedOutputs=0 2021-04-13 16:36:56.479 20572-21716/com.otaliastudios.transcoder.demo E/MediaMuxer: stop() is called in invalid state 3 2021-04-13 16:36:56.486 20572-21716/com.otaliastudios.transcoder.demo W/DefaultDataSink: Failed to release the muxer. java.lang.IllegalStateException: Failed to stop the muxer at android.media.MediaMuxer.nativeStop(Native Method) at android.media.MediaMuxer.stop(MediaMuxer.java:466) at android.media.MediaMuxer.release(MediaMuxer.java:706) at com.otaliastudios.transcoder.sink.DefaultDataSink.release(DefaultDataSink.java:224) at com.otaliastudios.transcoder.internal.transcode.DefaultTranscodeEngine.cleanup(DefaultTranscodeEngine.kt:137) at com.otaliastudios.transcoder.internal.transcode.TranscodeEngine$Companion.transcode(TranscodeEngine.kt:63) at com.otaliastudios.transcoder.internal.transcode.TranscodeEngine.transcode(Unknown Source:2) at com.otaliastudios.transcoder.Transcoder$1.call(Transcoder.java:102) at com.otaliastudios.transcoder.Transcoder$1.call(Transcoder.java:99) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at java.lang.Thread.run(Thread.java:919) 2021-04-13 16:36:56.486 20572-21716/com.otaliastudios.transcoder.demo I/DataSources: release(): releasing... 2021-04-13 16:36:56.487 20572-21716/com.otaliastudios.transcoder.demo I/DefaultDataSource(3): deinitialize(): deinitializing... 2021-04-13 16:36:56.489 20572-21716/com.otaliastudios.transcoder.demo I/DataSources: release(): released. 2021-04-13 16:36:56.490 20572-21716/com.otaliastudios.transcoder.demo I/MediaCodec: (0x7acca6c000) release 2021-04-13 16:36:56.502 20572-21716/com.otaliastudios.transcoder.demo I/MediaCodec: (0x7acfbd8a00) release
`
Hello, Please were you able to resolve this error? I'm getting the same error on the emulator.
Same problem. Not getting caught in onTranscodeProgress, onTranscodeCompleted, onTranscodeCanceled, nor onTranscodeFailed.
This is happening on multiple devices. We will have to try and revert to previous releases or a new library.
Additionally getting this error:
W/DefaultDataSource(1): Could not release extractor: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.media.MediaExtractor.release()' on a null object reference at com.otaliastudios.transcoder.source.DefaultDataSource.deinitialize(DefaultDataSource.java:95) at com.otaliastudios.transcoder.source.FilePathDataSource.deinitialize(FilePathDataSource.java:48) at com.otaliastudios.transcoder.internal.DataSources.deinit(DataSources.kt:23) at com.otaliastudios.transcoder.internal.DataSources.release(DataSources.kt:67) at com.otaliastudios.transcoder.internal.transcode.DefaultTranscodeEngine.cleanup(DefaultTranscodeEngine.kt:138) at com.otaliastudios.transcoder.internal.transcode.TranscodeEngine$Companion.transcode(TranscodeEngine.kt:63) at com.otaliastudios.transcoder.internal.transcode.TranscodeEngine.transcode(Unknown Source:2) at com.otaliastudios.transcoder.Transcoder$1.call(Transcoder.java:102) at com.otaliastudios.transcoder.Transcoder$1.call(Transcoder.java:99) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at java.lang.Thread.run(Thread.java:919) Could not release metadata: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.media.MediaMetadataRetriever.release()' on a null object reference at com.otaliastudios.transcoder.source.DefaultDataSource.deinitialize(DefaultDataSource.java:100) at com.otaliastudios.transcoder.source.FilePathDataSource.deinitialize(FilePathDataSource.java:48) at com.otaliastudios.transcoder.internal.DataSources.deinit(DataSources.kt:23) at com.otaliastudios.transcoder.internal.DataSources.release(DataSources.kt:67) at com.otaliastudios.transcoder.internal.transcode.DefaultTranscodeEngine.cleanup(DefaultTranscodeEngine.kt:138) at com.otaliastudios.transcoder.internal.transcode.TranscodeEngine$Companion.transcode(TranscodeEngine.kt:63) at com.otaliastudios.transcoder.internal.transcode.TranscodeEngine.transcode(Unknown Source:2) at com.otaliastudios.transcoder.Transcoder$1.call(Transcoder.java:102) at com.otaliastudios.transcoder.Transcoder$1.call(Transcoder.java:99) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at java.lang.Thread.run(Thread.java:919) I/DefaultDataSource(0): deinitialize(): deinitializing...
Please help.
Note - Reverted back to version 0.9.1 and it's working as before.
After migrating from 0.9.1 to 0.10.3, this error started to occur.
Same here on Moto G4 with 0.10.4. Reverted to 0.9.1 with which the error does not occur.
I can also confirm this issue, starting from v0.10.0 to v0.10.4
It seems to be very depended on the device, as I have multiple devices across different Android versions reporting the error and equally many devices which doesn't experience the issue.
So far we have seen the issue on the following devices:
- Motorola G6 Play (Android 9)
- Samsung Galaxy Tab S2 (Android 7)
- Huawei Honor 9 (Android 9)
- Samsung Galaxy S8 (Android 9)
- Samsung Galaxy S9 (Android 10)
- Sony XZ1 Compact (Android 9)
- Motorola G8 Plus (Android 10)
- LG G6 (Android 9)
- Samsung Galaxy S8+ (Android 9)
- Xiaomi Pocophone F1 (Android 10)
- Xiaomi Mi 9 SE
- SHARP QUALCOMM SHV39
- Motorola One Action (Android 10)
- LG G7 ThinQ (Android 10)
- Nokia 6 (Android 9)
Same Error ... Any update on this?
It's not being worked on. Stack traces in this ticket seem to represent different bugs, and in both cases I can't reproduce so it's hard to understand what's wrong.
If you have a repro device and media file, I encourage you to work on it or at least add a failing test here: https://github.com/natario1/Transcoder/blob/main/lib/src/androidTest/java/com/otaliastudios/transcoder/integration/IssuesTests.kt#L67-L90 , add media file in the assets folder. Then we should be able to fix it.
@natario1 on my device i am getting this exception (java.lang.IllegalStateException: Failed to stop the muxer). working fine on android 7,8,9 or 10 but in 6.0.1 its a bug.
I am also getting the same issue. I fixed by #159.
I have the same problem that happens all the time with any video :
V/TranscodeEngine(10878): transcode(): executed step=334 advanced=false completed=true
I/MPEG4Writer(10878): reset()
D/MPEG4Writer(10878): Audio track stopping. Stop source
D/MPEG4Writer(10878): Audio track source stopping
D/MPEG4Writer(10878): Audio track source stopped
D/MPEG4Writer(10878): Audio track stopped. Stop source
D/MPEG4Writer(10878): Video track stopping. Stop source
D/MPEG4Writer(10878): Video track source stopping
D/MPEG4Writer(10878): Video track source stopped
I/MPEG4Writer(10878): Received total/0-length (155/1) buffers and encoded 155 frames. - Video
D/MPEG4Writer(10878): Video track stopped. Stop source
D/MPEG4Writer(10878): Duration from tracks range is [7685805, 7850244] us
D/MPEG4Writer(10878): Stopping writer thread
D/MPEG4Writer(10878): 0 chunks are written in the last batch
D/MPEG4Writer(10878): Writer thread stopped
I/MPEG4Writer(10878): release()
E/TranscodeEngine(10878): Unexpected error while transcoding.
E/TranscodeEngine(10878): java.lang.IllegalStateException: Failed to stop the muxer
E/TranscodeEngine(10878): at android.media.MediaMuxer.nativeStop(Native Method)
E/TranscodeEngine(10878): at android.media.MediaMuxer.stop(MediaMuxer.java:466)
E/TranscodeEngine(10878): at com.otaliastudios.transcoder.sink.DefaultDataSink.stop(DefaultDataSink.java:201)
E/TranscodeEngine(10878): at com.otaliastudios.transcoder.internal.transcode.DefaultTranscodeEngine.transcode(DefaultTranscodeEngine.kt:125)
E/TranscodeEngine(10878): at com.otaliastudios.transcoder.internal.transcode.TranscodeEngine$Companion.transcode(TranscodeEngine.kt:48)
E/TranscodeEngine(10878): at com.otaliastudios.transcoder.internal.transcode.TranscodeEngine.transcode(Unknown Source:2)
E/TranscodeEngine(10878): at com.otaliastudios.transcoder.Transcoder$1.call(Transcoder.java:102)
E/TranscodeEngine(10878): at com.otaliastudios.transcoder.Transcoder$1.call(Transcoder.java:99)
E/TranscodeEngine(10878): at java.util.concurrent.FutureTask.run(FutureTask.java:266)
E/TranscodeEngine(10878): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
E/TranscodeEngine(10878): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
E/TranscodeEngine(10878): at java.lang.Thread.run(Thread.java:919)
E/MediaMuxer(10878): stop() is called in invalid state 3
W/DefaultDataSink(10878): Failed to release the muxer.
W/DefaultDataSink(10878): java.lang.IllegalStateException: Failed to stop the muxer
W/DefaultDataSink(10878): at android.media.MediaMuxer.nativeStop(Native Method)
W/DefaultDataSink(10878): at android.media.MediaMuxer.stop(MediaMuxer.java:466)
W/DefaultDataSink(10878): at android.media.MediaMuxer.release(MediaMuxer.java:706)
W/DefaultDataSink(10878): at com.otaliastudios.transcoder.sink.DefaultDataSink.release(DefaultDataSink.java:207)
W/DefaultDataSink(10878): at com.otaliastudios.transcoder.internal.transcode.DefaultTranscodeEngine.cleanup(DefaultTranscodeEngine.kt:130)
W/DefaultDataSink(10878): at com.otaliastudios.transcoder.internal.transcode.TranscodeEngine$Companion.transcode(TranscodeEngine.kt:63)
W/DefaultDataSink(10878): at com.otaliastudios.transcoder.internal.transcode.TranscodeEngine.transcode(Unknown Source:2)
W/DefaultDataSink(10878): at com.otaliastudios.transcoder.Transcoder$1.call(Transcoder.java:102)
W/DefaultDataSink(10878): at com.otaliastudios.transcoder.Transcoder$1.call(Transcoder.java:99)
W/DefaultDataSink(10878): at java.util.concurrent.FutureTask.run(FutureTask.java:266)
W/DefaultDataSink(10878): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
W/DefaultDataSink(10878): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
W/DefaultDataSink(10878): at java.lang.Thread.run(Thread.java:919)
I/DataSources(10878): release(): releasing...
I/DefaultDataSource(127183679)(10878): deinitialize(): releasing...
The relevant line i guess is E/MediaMuxer(10878): stop() is called in invalid state 3
How do you revert to 0.9.1 @aparkertg please ?
When i set implementation 'com.otaliastudios:transcoder:0.9.1' the gradle says it can't find this version :
8: Task failed with an exception.
-----------
* What went wrong:
Execution failed for task ':app:mergeDebugNativeLibs'.
> Could not resolve all files for configuration ':app:debugRuntimeClasspath'.
> Could not find com.otaliastudios:transcoder:0.9.1.
Searched in the following locations:
- https://dl.google.com/dl/android/maven2/com/otaliastudios/transcoder/0.9.1/transcoder-0.9.1.pom
- https://repo.maven.apache.org/maven2/com/otaliastudios/transcoder/0.9.1/transcoder-0.9.1.pom
- https://storage.googleapis.com/download.flutter.io/com/otaliastudios/transcoder/0.9.1/transcoder-0.9.1.pom
Edit : This version is in jcenter() which is deprecated...
The same issue on Xiaomi Redmi Note 9 Pro (Android 10). Reproducible with any file.
09-10 20:56:23.030 E/TranscodeEngine(10146): Unexpected error while transcoding.
09-10 20:56:23.030 E/TranscodeEngine(10146): java.lang.IllegalStateException: Failed to stop the muxer
09-10 20:56:23.030 E/TranscodeEngine(10146): at android.media.MediaMuxer.nativeStop(Native Method)
09-10 20:56:23.030 E/TranscodeEngine(10146): at android.media.MediaMuxer.stop(MediaMuxer.java:466)
09-10 20:56:23.030 E/TranscodeEngine(10146): at com.otaliastudios.transcoder.sink.DefaultDataSink.stop(DefaultDataSink.java:218)
09-10 20:56:23.030 E/TranscodeEngine(10146): at com.otaliastudios.transcoder.internal.transcode.DefaultTranscodeEngine.transcode(DefaultTranscodeEngine.kt:132)
09-10 20:56:23.030 E/TranscodeEngine(10146): at com.otaliastudios.transcoder.internal.transcode.TranscodeEngine$Companion.transcode(TranscodeEngine.kt:48)
09-10 20:56:23.030 E/TranscodeEngine(10146): at com.otaliastudios.transcoder.internal.transcode.TranscodeEngine.transcode(Unknown Source:2)
09-10 20:56:23.030 E/TranscodeEngine(10146): at com.otaliastudios.transcoder.Transcoder$1.call(Transcoder.java:102)
09-10 20:56:23.030 E/TranscodeEngine(10146): at com.otaliastudios.transcoder.Transcoder$1.call(Transcoder.java:99)
09-10 20:56:23.030 E/TranscodeEngine(10146): at java.util.concurrent.FutureTask.run(FutureTask.java:266)
09-10 20:56:23.030 E/TranscodeEngine(10146): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
09-10 20:56:23.030 E/TranscodeEngine(10146): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
09-10 20:56:23.030 E/TranscodeEngine(10146): at java.lang.Thread.run(Thread.java:919)
09-10 20:56:23.031 I/Decoder(VIDEO,4)(10146): release(): releasing codec. dequeuedInputs=0 dequeuedOutputs=0
09-10 20:56:23.031 E/MediaMuxer(10146): stop() is called in invalid state 3
09-10 20:56:23.032 W/DefaultDataSink(10146): Failed to release the muxer.
09-10 20:56:23.032 W/DefaultDataSink(10146): java.lang.IllegalStateException: Failed to stop the muxer
09-10 20:56:23.032 W/DefaultDataSink(10146): at android.media.MediaMuxer.nativeStop(Native Method)
09-10 20:56:23.032 W/DefaultDataSink(10146): at android.media.MediaMuxer.stop(MediaMuxer.java:466)
09-10 20:56:23.032 W/DefaultDataSink(10146): at android.media.MediaMuxer.release(MediaMuxer.java:706)
09-10 20:56:23.032 W/DefaultDataSink(10146): at com.otaliastudios.transcoder.sink.DefaultDataSink.release(DefaultDataSink.java:224)
09-10 20:56:23.032 W/DefaultDataSink(10146): at com.otaliastudios.transcoder.internal.transcode.DefaultTranscodeEngine.cleanup(DefaultTranscodeEngine.kt:137)
09-10 20:56:23.032 W/DefaultDataSink(10146): at com.otaliastudios.transcoder.internal.transcode.TranscodeEngine$Companion.transcode(TranscodeEngine.kt:63)
09-10 20:56:23.032 W/DefaultDataSink(10146): at com.otaliastudios.transcoder.internal.transcode.TranscodeEngine.transcode(Unknown Source:2)
09-10 20:56:23.032 W/DefaultDataSink(10146): at com.otaliastudios.transcoder.Transcoder$1.call(Transcoder.java:102)
09-10 20:56:23.032 W/DefaultDataSink(10146): at com.otaliastudios.transcoder.Transcoder$1.call(Transcoder.java:99)
09-10 20:56:23.032 W/DefaultDataSink(10146): at java.util.concurrent.FutureTask.run(FutureTask.java:266)
09-10 20:56:23.032 W/DefaultDataSink(10146): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
09-10 20:56:23.032 W/DefaultDataSink(10146): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
09-10 20:56:23.032 W/DefaultDataSink(10146): at java.lang.Thread.run(Thread.java:919)
Same issue on samsung a20s
Still an issue on 0.10.5 hence stuck with 0.9.1, Huawei P10 Lite Android 8
java.lang.IllegalStateException: Failed to stop the muxer
at android.media.MediaMuxer.nativeStop(Native Method)
at android.media.MediaMuxer.stop(MediaMuxer.java:447)
at com.otaliastudios.transcoder.sink.DefaultDataSink.stop(Unknown Source:2)
at com.otaliastudios.transcoder.internal.transcode.DefaultTranscodeEngine.transcode(Unknown Source:174)
at com.otaliastudios.transcoder.internal.transcode.TranscodeEngine$Companion.transcode(Unknown Source:113)
at com.otaliastudios.transcoder.internal.transcode.TranscodeEngine.transcode(Unknown Source:2)
at com.otaliastudios.transcoder.Transcoder$1.call(SourceFile:0)
at com.otaliastudios.transcoder.Transcoder$1.call(SourceFile:0)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:784)
ignoring execution exception. Should get handled by onTranscodeFiled() instead