Skip to content

Crash when mixing video (48 kHz) with audio (44.1 kHz) background track #2963

@hm21

Description

@hm21

I’m currently building an open-source video-editor with Flutter. The problem I’m struggling with right now is that the app crashes when I try to add background music to a video.

From what I can tell, the issue seems to be that the video has a sample rate of 48kHz while the audio track has a sample rate of 44.1kHz which appears to cause the crash. At this point, I’m not sure whether I’m doing something wrong, whether mixing different sample rates is simply not supported, or whether this could be a device-specific issue. That's why I opened it as a question instead of an issue.

So my question is whether this setup should normally work, and if so, whether I need to enable any special configuration to make it work properly?

For the case it's unsupported, is there any recommended alternative way to parse the audio? At the moment I’m converting it like this but that approach is obviously very slow and really just a last-resort solution.

Code

I tried the official multi-asset example here with the only difference being that I used only one video.

Expand code
val transformer = Transformer.Builder(context)
    .setVideoMimeType(MimeTypes.VIDEO_H264)
    .setAudioMimeType(MimeTypes.AUDIO_AAC)
    .build()


val video1 = EditedMediaItem.Builder(
    MediaItem.fromUri(videoUri)
)
    .build()


val videoSequence = EditedMediaItemSequence.Builder(
    setOf(C.TRACK_TYPE_AUDIO, C.TRACK_TYPE_VIDEO)
)
    .addItems(video1)
    .build()

val backgroundAudio = EditedMediaItem.Builder(
    MediaItem.fromUri(audioUri)
)
    .build()

val backgroundAudioSequence = EditedMediaItemSequence.Builder(
    setOf(C.TRACK_TYPE_AUDIO)
)
    .addItem(backgroundAudio)
    .setIsLooping(true)  // Loop audio track through duration of videoSequence
    .build()

val composition = Composition.Builder(videoSequence, backgroundAudioSequence)
    .build()


transformer.start(composition, outputFile.absolutePath)

Logs

FYI: I know the log says Audio cannot be modified to match downstream format AudioFormat[sampleRate=44100, channelCount=2, encoding=2] but I still believe or hope there’s simply an option I need to enable to make it work, or that it might just be an issue with a specific device.

E/RenderVideo(31164): androidx.media3.transformer.ExportException: Audio error: Error while registering input 1, audioFormat=AudioFormat[sampleRate=44100, channelCount=2, encoding=2]
E/RenderVideo(31164): 	at androidx.media3.transformer.AudioGraph.registerInput(AudioGraph.java:97)
E/RenderVideo(31164): 	at androidx.media3.transformer.AudioSampleExporter.getInput(AudioSampleExporter.java:137)
E/RenderVideo(31164): 	at androidx.media3.transformer.AudioSampleExporter.getInput(AudioSampleExporter.java:39)
E/RenderVideo(31164): 	at androidx.media3.transformer.TransformerInternal$SequenceAssetLoaderListener.onOutputFormat(TransformerInternal.java:674)
E/RenderVideo(31164): 	at androidx.media3.transformer.SequenceAssetLoader.onOutputFormat(SequenceAssetLoader.java:333)
E/RenderVideo(31164): 	at androidx.media3.transformer.SequenceAssetLoader.onOutputFormat(SequenceAssetLoader.java:61)
E/RenderVideo(31164): 	at androidx.media3.transformer.ExoAssetLoaderBaseRenderer.ensureSampleConsumerInitialized(ExoAssetLoaderBaseRenderer.java:272)
E/RenderVideo(31164): 	at androidx.media3.transformer.ExoAssetLoaderBaseRenderer.render(ExoAssetLoaderBaseRenderer.java:109)
E/RenderVideo(31164): 	at androidx.media3.exoplayer.RendererHolder.render(RendererHolder.java:392)
E/RenderVideo(31164): 	at androidx.media3.exoplayer.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:1378)
E/RenderVideo(31164): 	at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:707)
E/RenderVideo(31164): 	at android.os.Handler.dispatchMessage(Handler.java:102)
E/RenderVideo(31164): 	at android.os.Looper.loopOnce(Looper.java:226)
E/RenderVideo(31164): 	at android.os.Looper.loop(Looper.java:313)
E/RenderVideo(31164): 	at android.os.HandlerThread.run(HandlerThread.java:67)
E/RenderVideo(31164): Caused by: androidx.media3.common.audio.AudioProcessor$UnhandledAudioFormatException: Audio can not be modified to match downstream format AudioFormat[sampleRate=44100, channelCount=2, encoding=2]
E/RenderVideo(31164): 	at androidx.media3.transformer.AudioGraphInput.configureProcessing(AudioGraphInput.java:579)
E/RenderVideo(31164): 	at androidx.media3.transformer.AudioGraphInput.<init>(AudioGraphInput.java:115)
E/RenderVideo(31164): 	at androidx.media3.transformer.AudioGraph.registerInput(AudioGraph.java:90)
Expand full log
D/ProVideoEditor(31164): Received videoClipsRaw: 1 clips
D/ProVideoEditor(31164): Clip 0: path=/data/user/0/com.example.pro_video_editor_example/cache/video_1766565613987.mp4, start=null, end=null
I/RenderVideo(31164): Starting render job
D/RenderVideo(31164): Using custom output path: /data/user/0/com.example.pro_video_editor_example/cache/my_video_1766565613899.mp4
D/RenderVideo(31164): Video file validated: /data/user/0/com.example.pro_video_editor_example/cache/video_1766565613987.mp4 (5253880 bytes)
D/RenderVideo(31164): Video URI created: file:///data/user/0/com.example.pro_video_editor_example/cache/video_1766565613987.mp4
D/RenderVideo(31164): Audio file validated: /data/user/0/com.example.pro_video_editor_example/cache/audio1.mp3 (223525 bytes)
D/RenderVideo(31164): Building Transformer with H264 video and AAC audio
D/RenderVideo(31164): Transformer built successfully
D/RenderVideo(31164): Building video EditedMediaItem
D/RenderVideo(31164): Video EditedMediaItem created
D/RenderVideo(31164): Building video sequence with audio and video tracks
D/RenderVideo(31164): Video sequence created
D/RenderVideo(31164): Building composition with background audio
D/RenderVideo(31164): Background audio EditedMediaItem created
D/RenderVideo(31164): Background audio sequence created with looping enabled
D/RenderVideo(31164): Composition created successfully
I/RenderVideo(31164): Starting transformer export to: /data/user/0/com.example.pro_video_editor_example/cache/my_video_1766565613899.mp4
I/TransformerInternal(31164): Init d34e765 [AndroidXMedia3/1.9.0] [beyond1, SM-G973F, samsung, 31]
I/ExoPlayerImpl(31164): Init b257c3a [AndroidXMedia3/1.9.0] [beyond1, SM-G973F, samsung, 31]
I/ExoPlayerImpl(31164): Init 81194e1 [AndroidXMedia3/1.9.0] [beyond1, SM-G973F, samsung, 31]
D/RenderVideo(31164): Transformer started
D/RenderVideo(31164): Progress tracking initialized
I/CCodec  (31164): state->set(ALLOCATING)
I/CCodec  (31164): state->set(ALLOCATING)
I/CCodec  (31164): allocate(c2.sec.mp3.decoder)
I/CCodec  (31164): allocate(c2.android.aac.decoder)
I/Codec2Client(31164): Available Codec2 services: "default" "software"
I/CCodec  (31164): setting up 'default' as default (vendor) store
I/CCodec  (31164): setting up 'default' as default (vendor) store
I/CCodec  (31164): Created component [c2.android.aac.decoder]
I/CCodec  (31164): state->set(ALLOCATED)
D/CCodecConfig(31164): read media type: audio/mp4a-latm
I/CCodec  (31164): Created component [c2.sec.mp3.decoder]
I/CCodec  (31164): state->set(ALLOCATED)
D/CCodecConfig(31164): read media type: audio/mpeg
D/ReflectedParamUpdater(31164): extent() != 1 for single value type: algo.buffers.max-count.values
D/ReflectedParamUpdater(31164): extent() != 1 for single value type: output.subscribed-indices.values
D/ReflectedParamUpdater(31164): extent() != 1 for single value type: input.buffers.allocator-ids.values
D/ReflectedParamUpdater(31164): extent() != 1 for single value type: output.buffers.allocator-ids.values
D/ReflectedParamUpdater(31164): extent() != 1 for single value type: algo.buffers.allocator-ids.values
D/ReflectedParamUpdater(31164): extent() != 1 for single value type: output.buffers.pool-ids.values
D/ReflectedParamUpdater(31164): extent() != 1 for single value type: algo.buffers.pool-ids.values
D/ReflectedParamUpdater(31164): extent() != 1 for single value type: algo.buffers.max-count.values
D/ReflectedParamUpdater(31164): extent() != 1 for single value type: output.subscribed-indices.values
D/ReflectedParamUpdater(31164): extent() != 1 for single value type: input.buffers.allocator-ids.values
D/ReflectedParamUpdater(31164): extent() != 1 for single value type: output.buffers.allocator-ids.values
D/ReflectedParamUpdater(31164): extent() != 1 for single value type: algo.buffers.allocator-ids.values
D/ReflectedParamUpdater(31164): extent() != 1 for single value type: output.buffers.pool-ids.values
D/ReflectedParamUpdater(31164): extent() != 1 for single value type: algo.buffers.pool-ids.values
I/CCodecConfig(31164): query failed after returning 7 values (BAD_INDEX)
I/CCodecConfig(31164): query failed after returning 19 values (BAD_INDEX)
D/CCodecConfig(31164): c2 config diff is Dict {
D/CCodecConfig(31164):   c2::u32 coded.bitrate.value = 64000
D/CCodecConfig(31164):   c2::u32 input.buffers.max-size.value = 8192
D/CCodecConfig(31164):   c2::u32 input.delay.value = 0
D/CCodecConfig(31164):   string input.media-type.value = "audio/mpeg"
D/CCodecConfig(31164):   string output.media-type.value = "audio/raw"
D/CCodecConfig(31164):   c2::u32 raw.channel-count.value = 2
D/CCodecConfig(31164):   c2::u32 raw.sample-rate.value = 44100
D/CCodecConfig(31164): }
D/CCodecConfig(31164): c2 config diff is Dict {
D/CCodecConfig(31164):   c2::u32 coded.aac-packaging.value = 0
D/CCodecConfig(31164):   c2::u32 coded.bitrate.value = 64000
D/CCodecConfig(31164):   c2::u32 coded.pl.level = 0
D/CCodecConfig(31164):   c2::u32 coded.pl.profile = 8192
D/CCodecConfig(31164):   c2::i32 coding.drc.album-mode.value = 0
D/CCodecConfig(31164):   c2::float coding.drc.attenuation-factor.value = 1
D/CCodecConfig(31164):   c2::float coding.drc.boost-factor.value = 1
D/CCodecConfig(31164):   c2::i32 coding.drc.compression-mode.value = 3
D/CCodecConfig(31164):   c2::i32 coding.drc.effect-type.value = 3
D/CCodecConfig(31164):   c2::float coding.drc.encoded-level.value = 0.25
D/CCodecConfig(31164):   c2::float coding.drc.reference-level.value = -16
D/CCodecConfig(31164):   c2::u32 input.buffers.max-size.value = 8192
D/CCodecConfig(31164):   c2::u32 input.delay.value = 0
D/CCodecConfig(31164):   string input.media-type.value = "audio/mp4a-latm"
D/CCodecConfig(31164):   c2::u32 output.delay.value = 2
D/CCodecConfig(31164):   c2::float output.drc.output-loudness.value = 0.25
D/CCodecConfig(31164):   string output.media-type.value = "audio/raw"
D/CCodecConfig(31164):   c2::u32 raw.channel-count.value = 1
D/CCodecConfig(31164):   c2::u32 raw.max-channel-count.value = 8
D/CCodecConfig(31164):   c2::u32 raw.sample-rate.value = 44100
D/CCodecConfig(31164): }
D/MediaCodec(31164): flushMediametrics
D/CCodec  (31164): [c2.sec.mp3.decoder] buffers are bound to CCodec for this session
I/CCodec  (31164): appPid(31164) width(0) height(0)
I/CCodec  (31164): VideoController::setValues() isSet [0]
I/CCodec  (31164): set values for [exynos9820]
D/CCodecConfig(31164): no c2 equivalents for exo-pixel-width-height-ratio-float
D/CCodecConfig(31164): no c2 equivalents for is-forced-subtitle
D/CCodecConfig(31164): no c2 equivalents for channel-mask
D/CCodecConfig(31164): no c2 equivalents for encoder-delay
D/CCodecConfig(31164): no c2 equivalents for is-autoselect
D/CCodecConfig(31164): no c2 equivalents for is-default
D/CCodecConfig(31164): no c2 equivalents for encoder-padding
D/CCodecConfig(31164): no c2 equivalents for flags
D/MediaCodec(31164): flushMediametrics
D/CCodec  (31164): [c2.android.aac.decoder] buffers are bound to CCodec for this session
I/CCodec  (31164): appPid(31164) width(0) height(0)
D/CCodecConfig(31164): no c2 equivalents for exo-pixel-width-height-ratio-float
D/CCodecConfig(31164): no c2 equivalents for track-id
D/CCodecConfig(31164): no c2 equivalents for is-forced-subtitle
D/CCodecConfig(31164): no c2 equivalents for language
D/CCodecConfig(31164): no c2 equivalents for codecs-string
D/CCodecConfig(31164): no c2 equivalents for channel-mask
D/CCodecConfig(31164): no c2 equivalents for encoder-delay
D/CCodecConfig(31164): no c2 equivalents for is-autoselect
D/CCodecConfig(31164): no c2 equivalents for is-default
D/CCodecConfig(31164): no c2 equivalents for encoder-padding
D/CCodecConfig(31164): no c2 equivalents for flags
D/CCodecConfig(31164): config failed => CORRUPTED
D/CCodecConfig(31164): c2 config diff is   c2::u32 coded.bitrate.value = 416704
D/CCodecConfig(31164):   c2::u32 raw.channel-count.value = 6
D/CCodecConfig(31164):   c2::u32 raw.sample-rate.value = 48000
D/CCodecConfig(31164): config failed => CORRUPTED
W/Codec2Client(31164): query -- param skipped: index = 1107298332.
D/CCodec  (31164): client requested max input size 1378, which is smaller than what component recommended (8192); overriding with component recommendation.
W/CCodec  (31164): This behavior is subject to change. It is recommended that app developers double check whether the requested max input size is in reasonable range.
D/CCodec  (31164): setup formats input: AMessage(what = 0x00000000) = {
D/CCodec  (31164):   int32_t aac-drc-album-mode = 0
D/CCodec  (31164):   int32_t aac-drc-boost-level = 127
D/CCodec  (31164):   int32_t aac-drc-cut-level = 127
D/CCodec  (31164):   int32_t aac-drc-effect-type = 3
D/CCodec  (31164):   int32_t aac-encoded-target-level = -1
D/CCodec  (31164):   int32_t aac-max-output-channel_count = 8
D/CCodec  (31164):   int32_t aac-target-ref-level = 64
D/CCodec  (31164):   int32_t bitrate = 416704
D/CCodec  (31164):   int32_t channel-count = 6
D/CCodec  (31164):   int32_t level = 0
D/CCodec  (31164):   int32_t max-input-size = 8192
D/CCodec  (31164):   string mime = "audio/mp4a-latm"
D/CCodec  (31164):   int32_t profile = 2
D/CCodec  (31164):   int32_t sample-rate = 48000
D/CCodec  (31164):   int64_t durationUs = 0
D/CCodec  (31164): }
D/CCodecConfig(31164): c2 config diff is   c2::u32 coded.bitrate.value = 160000
D/CCodec  (31164): setup formats output: AMessage(what = 0x00000000) = {
D/CCodec  (31164):   int32_t aac-drc-album-mode = 0
D/CCodec  (31164):   int32_t aac-drc-boost-level = 127
D/CCodec  (31164):   int32_t aac-drc-cut-level = 127
D/CCodec  (31164):   int32_t aac-drc-effect-type = 3
D/CCodec  (31164):   int32_t aac-drc-output-loudness = -1
D/CCodec  (31164):   int32_t aac-encoded-target-level = -1
D/CCodec  (31164):   int32_t aac-max-output-channel_count = 8
D/CCodec  (31164):   int32_t aac-target-ref-level = 64
D/CCodec  (31164):   int32_t channel-count = 6
D/CCodec  (31164):   string mime = "audio/raw"
D/CCodec  (31164):   int32_t sample-rate = 48000
D/CCodec  (31164):   int32_t encoder-delay = 0
D/CCodec  (31164):   int32_t encoder-padding = 0
D/CCodec  (31164):   int32_t channel-mask = 252
D/CCodec  (31164): }
I/CCodecConfig(31164): query failed after returning 19 values (BAD_INDEX)
W/Codec2Client(31164): query -- param skipped: index = 1107298332.
D/CCodec  (31164): client requested max input size 4096, which is smaller than what component recommended (8192); overriding with component recommendation.
W/CCodec  (31164): This behavior is subject to change. It is recommended that app developers double check whether the requested max input size is in reasonable range.
D/CCodec  (31164): setup formats input: AMessage(what = 0x00000000) = {
D/CCodec  (31164):   int32_t bitrate = 160000
D/CCodec  (31164):   int32_t channel-count = 2
D/CCodec  (31164):   int32_t max-input-size = 8192
D/CCodec  (31164):   string mime = "audio/mpeg"
D/CCodec  (31164):   int32_t sample-rate = 44100
D/CCodec  (31164):   int64_t durationUs = 0
D/CCodec  (31164): }
D/CCodec  (31164): setup formats output: AMessage(what = 0x00000000) = {
D/CCodec  (31164):   int32_t channel-count = 2
D/CCodec  (31164):   string mime = "audio/raw"
D/CCodec  (31164):   int32_t sample-rate = 44100
D/CCodec  (31164):   int32_t encoder-delay = 528
D/CCodec  (31164):   int32_t encoder-padding = 2222
D/CCodec  (31164):   int32_t channel-mask = 12
D/CCodec  (31164): }
I/CCodecConfig(31164): query failed after returning 7 values (BAD_INDEX)
I/CCodec  (31164): state->set(STARTING)
I/CCodec  (31164): state->set(STARTING)
W/Codec2Client(31164): query -- param skipped: index = 1342179345.
W/Codec2Client(31164): query -- param skipped: index = 2415921170.
D/C2Store (31164): Using ION
W/Codec2Client(31164): query -- param skipped: index = 1342179345.
W/Codec2Client(31164): query -- param skipped: index = 2415921170.
W/Codec2Client(31164): query -- param skipped: index = 1610614798.
D/CCodecBufferChannel(31164): [c2.sec.mp3.decoder#793] Created input block pool with allocatorID 16 => poolID 17 - OK (0)
D/CCodecBufferChannel(31164): [c2.android.aac.decoder#627] Created input block pool with allocatorID 16 => poolID 18 - OK (0)
I/CCodecBufferChannel(31164): [c2.sec.mp3.decoder#793] Created output block pool with allocatorID 16 => poolID 138 - OK
D/CCodecBufferChannel(31164): [c2.sec.mp3.decoder#793] Configured output block pool ids 138 => OK
I/CCodecBufferChannel(31164): [c2.android.aac.decoder#627] Created output block pool with allocatorID 16 => poolID 4547 - OK
D/CCodecBufferChannel(31164): [c2.android.aac.decoder#627] Configured output block pool ids 4547 => OK
I/CCodec  (31164): state->set(RUNNING)
E/ion     (31164): ioctl c0044901 failed with code -1: Inappropriate ioctl for device
I/CCodecBufferChannel(31164): [c2.android.aac.decoder#627] 4 initial input buffers available
I/CCodec  (31164): state->set(RUNNING)
I/CCodecBufferChannel(31164): [c2.sec.mp3.decoder#793] 4 initial input buffers available
I/ACodec  (31164):  [] Now uninitialized
I/ACodec  (31164): [] onAllocateComponent
I/OMXClient(31164): IOmx service obtained
I/ACodec  (31164): [OMX.Exynos.avc.dec] Now Loaded
D/MediaCodec(31164): flushMediametrics
D/SurfaceUtils(31164): connecting to surface 0x7b02cd97f0, reason connectToSurface
I/MediaCodec(31164): [OMX.Exynos.avc.dec] setting surface generation to 31911937
D/SurfaceUtils(31164): disconnecting from surface 0x7b02cd97f0, reason connectToSurface(reconnect)
D/SurfaceUtils(31164): connecting to surface 0x7b02cd97f0, reason connectToSurface(reconnect)
D/SurfaceUtils(31164): legacy buffer drop disabled: target sdk (36)
I/ACodec  (31164): app-pid(31164)
W/ACodec  (31164): [OMX.Exynos.avc.dec] setting HDRStaticInfo failed even though codec advertises support
W/ACodec  (31164): [OMX.Exynos.avc.dec] getting HDRStaticInfo failed even though codec advertises support
I/ACodec  (31164): [OMX.Exynos.avc.dec] Now Loaded->Idle
D/SurfaceUtils(31164): set up nativeWindow 0x7b02cd97f0 for 1280x720, color 0x105, rotation 0, usage 0x402900
I/ACodec  (31164): [OMX.Exynos.avc.dec] configureOutputBuffersFromNativeWindow setBufferCount : 9, minUndequeuedBuffers : 5
I/ACodec  (31164): [OMX.Exynos.avc.dec] Now Idle->Executing
I/MediaCodec(31164): setCodecState state(0), called in 6
I/ACodec  (31164): [OMX.Exynos.avc.dec] Now Executing
I/ACodec  (31164): [OMX.Exynos.avc.dec] calling emptyBuffer 1 w/ codec specific data, size : 27
I/ACodec  (31164): [OMX.Exynos.avc.dec] calling emptyBuffer 2 w/ codec specific data, size : 8
W/ACodec  (31164): [OMX.Exynos.avc.dec] getting HDRStaticInfo failed even though codec advertises support
I/ACodec  (31164): [OMX.Exynos.avc.dec] Now handling output port settings change
D/SurfaceUtils(31164): set up nativeWindow 0x7b02cd97f0 for 1280x720, color 0x105, rotation 0, usage 0x402900
I/ACodec  (31164): [OMX.Exynos.avc.dec] configureOutputBuffersFromNativeWindow setBufferCount : 13, minUndequeuedBuffers : 5
I/CCodec  (31164): state->set(ALLOCATING)
I/CCodec  (31164): allocate(c2.android.aac.encoder)
I/ACodec  (31164): [OMX.Exynos.avc.dec] Now Executing
I/CCodec  (31164): setting up 'default' as default (vendor) store
I/CCodec  (31164): Created component [c2.android.aac.encoder]
I/CCodec  (31164): state->set(ALLOCATED)
D/CCodecConfig(31164): read media type: audio/mp4a-latm
D/ReflectedParamUpdater(31164): extent() != 1 for single value type: algo.buffers.max-count.values
D/ReflectedParamUpdater(31164): extent() != 1 for single value type: output.subscribed-indices.values
D/ReflectedParamUpdater(31164): extent() != 1 for single value type: input.buffers.allocator-ids.values
D/ReflectedParamUpdater(31164): extent() != 1 for single value type: output.buffers.allocator-ids.values
D/ReflectedParamUpdater(31164): extent() != 1 for single value type: algo.buffers.allocator-ids.values
D/ReflectedParamUpdater(31164): extent() != 1 for single value type: output.buffers.pool-ids.values
D/ReflectedParamUpdater(31164): extent() != 1 for single value type: algo.buffers.pool-ids.values
I/CCodecConfig(31164): query failed after returning 9 values (BAD_INDEX)
D/CCodecConfig(31164): c2 config diff is Dict {
D/CCodecConfig(31164):   c2::u32 coded.bitrate.value = 64000
D/CCodecConfig(31164):   c2::u32 coded.pl.level = 0
D/CCodecConfig(31164):   c2::u32 coded.pl.profile = 8192
D/CCodecConfig(31164):   c2::u32 coding.aac-sbr-mode.value = 3
D/CCodecConfig(31164):   c2::u32 input.buffers.max-size.value = 2048
D/CCodecConfig(31164):   c2::u32 input.delay.value = 0
D/CCodecConfig(31164):   string input.media-type.value = "audio/raw"
D/CCodecConfig(31164):   string output.media-type.value = "audio/mp4a-latm"
D/CCodecConfig(31164):   c2::u32 raw.channel-count.value = 1
D/CCodecConfig(31164):   c2::u32 raw.sample-rate.value = 44100
D/CCodecConfig(31164): }
D/CodecSeeding(31164): Seed: codec c2.android.aac.encoder, mediatype audio/mp4a-latm, overrideable 1
D/CodecProperties(31164): setFeatureValue(_vq_eligible.device,1)
D/CodecProperties(31164): setFeatureValue(_quality.target,1)
D/CodecSeeding(31164): Seed: codec c2.android.aac.encoder, mediatype audio/mp4a-latm, overrideable 0
D/MediaCodec(31164): shapeMediaFormat: deltas(0): AMessage(what = 0x00000000) = {
D/MediaCodec(31164):   }
D/MediaCodec(31164): flushMediametrics
D/CCodec  (31164): [c2.android.aac.encoder] buffers are bound to CCodec for this session
I/CCodec  (31164): appPid(31164) width(0) height(0)
D/CCodecConfig(31164): no c2 equivalents for exo-pixel-width-height-ratio-float
D/CCodecConfig(31164): no c2 equivalents for is-forced-subtitle
D/CCodecConfig(31164): no c2 equivalents for exo-pcm-encoding-int
D/CCodecConfig(31164): no c2 equivalents for channel-mask
D/CCodecConfig(31164): no c2 equivalents for encoder-delay
D/CCodecConfig(31164): no c2 equivalents for is-autoselect
D/CCodecConfig(31164): no c2 equivalents for is-default
D/CCodecConfig(31164): no c2 equivalents for encoder-padding
D/CCodecConfig(31164): no c2 equivalents for flags
D/CCodecConfig(31164): no c2 equivalents for encoder
D/CCodecConfig(31164): c2 config diff is   c2::u32 coded.bitrate.value = 131072
D/CCodecConfig(31164):   c2::u32 raw.channel-count.value = 6
D/CCodecConfig(31164):   c2::u32 raw.sample-rate.value = 48000
W/Codec2Client(31164): query -- param skipped: index = 1107298332.
D/CCodec  (31164): Setting encoder options for disabling wrapping
D/CCodec  (31164): setup formats input: AMessage(what = 0x00000000) = {
D/CCodec  (31164):   int32_t sample-rate = 48000
D/CCodec  (31164):   int32_t channel-count = 6
D/CCodec  (31164):   int32_t max-input-size = 12288
D/CCodec  (31164):   string mime = "audio/raw"
D/CCodec  (31164):   int32_t channel-mask = 252
D/CCodec  (31164):   int32_t bytebuffer-wrapping-disable = 1
D/CCodec  (31164): }
D/CCodec  (31164): setup formats output: AMessage(what = 0x00000000) = {
D/CCodec  (31164):   int32_t sample-rate = 48000
D/CCodec  (31164):   int32_t bitrate = 131072
D/CCodec  (31164):   int32_t channel-count = 6
D/CCodec  (31164):   int32_t level = 0
D/CCodec  (31164):   int32_t max-bitrate = 131072
D/CCodec  (31164):   string mime = "audio/mp4a-latm"
D/CCodec  (31164):   int32_t profile = 2
D/CCodec  (31164): }
I/CCodecConfig(31164): query failed after returning 9 values (BAD_INDEX)
D/CCodecConfig(31164): c2 config diff is   c2::u32 input.buffers.max-size.value = 12288
I/CCodec  (31164): state->set(STARTING)
W/Codec2Client(31164): query -- param skipped: index = 1342179345.
W/Codec2Client(31164): query -- param skipped: index = 2415921170.
W/Codec2Client(31164): query -- param skipped: index = 3254792206.
W/Codec2Client(31164): query -- param skipped: index = 3254792194.
D/CCodecBufferChannel(31164): [c2.android.aac.encoder#751] Created input block pool with allocatorID 16 => poolID 19 - OK (0)
I/CCodecBufferChannel(31164): [c2.android.aac.encoder#751] Created output block pool with allocatorID 16 => poolID 4548 - OK
D/CCodecBufferChannel(31164): [c2.android.aac.encoder#751] Configured output block pool ids 4548 => OK
I/CCodec  (31164): state->set(RUNNING)
I/CCodecBufferChannel(31164): [c2.android.aac.encoder#751] 4 initial input buffers available
I/TransformerInternal(31164): Release d34e765 [AndroidXMedia3/1.9.0] [beyond1, SM-G973F, samsung, 31] [media3.common, media3.transformer, media3.exoplayer, media3.decoder, media3.datasource, media3.extractor, media3.effect]
I/MediaCodec(31164): setCodecState state(1), called in 6
E/BufferQueueProducer(31164): [SurfaceTexture-1-31164-0](id:79bc00000004,api:3,p:31164,c:31164) dequeueBuffer: BufferQueue has been abandoned
E/ACodec  (31164): dequeueBuffer failed: NO_INIT(-19).
E/BufferQueueProducer(31164): [SurfaceTexture-1-31164-0](id:79bc00000004,api:3,p:31164,c:31164) queueBuffer: BufferQueue has been abandoned
E/Surface (31164): queueBuffer: error queuing buffer, -19
E/ACodec  (31164): [OMX.Exynos.avc.dec] BaseState::onOutputBufferDrained returning error -19
E/ACodec  (31164): signalError(omxError 0x80001001, internalError -19)
E/MediaCodec(31164): Codec reported err 0xffffffed, actionCode 0, while in state 6/STARTED
D/MediaCodec(31164): flushMediametrics
W/ACodec  (31164): not dequeuing from native window due to fatal error
D/SurfaceUtils(31164): disconnecting from surface 0x7b02cd97f0, reason disconnectFromSurface
E/Surface (31164): freeAllBuffers: 5 buffers were freed while being dequeued!
E/MediaCodec(31164): getBufferAndFormat - not executing
I/ExoPlayerImpl(31164): Release b257c3a [AndroidXMedia3/1.9.0] [beyond1, SM-G973F, samsung, 31] [media3.common, media3.transformer, media3.exoplayer, media3.decoder, media3.datasource, media3.extractor, media3.effect]
D/DefaultCodec(31164): MediaCodec error
D/DefaultCodec(31164):   java.lang.IllegalStateException
D/DefaultCodec(31164):       at android.media.MediaCodec.getBuffer(Native Method)
D/DefaultCodec(31164):       at android.media.MediaCodec.getInputBuffer(MediaCodec.java:3993)
D/DefaultCodec(31164):       at androidx.media3.transformer.DefaultCodec.maybeDequeueInputBuffer(DefaultCodec.java:203)
D/DefaultCodec(31164):       at androidx.media3.transformer.ExoAssetLoaderBaseRenderer.feedDecoderFromInput(ExoAssetLoaderBaseRenderer.java:288)
D/DefaultCodec(31164):       at androidx.media3.transformer.ExoAssetLoaderBaseRenderer.render(ExoAssetLoaderBaseRenderer.java:112)
D/DefaultCodec(31164):       at androidx.media3.exoplayer.RendererHolder.render(RendererHolder.java:392)
D/DefaultCodec(31164):       at androidx.media3.exoplayer.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:1378)
D/DefaultCodec(31164):       at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:707)
D/DefaultCodec(31164):       at android.os.Handler.dispatchMessage(Handler.java:102)
D/DefaultCodec(31164):       at android.os.Looper.loopOnce(Looper.java:226)
D/DefaultCodec(31164):       at android.os.Looper.loop(Looper.java:313)
D/DefaultCodec(31164):       at android.os.HandlerThread.run(HandlerThread.java:67)
W/TransformerInternal(31164): Export error after export ended
W/TransformerInternal(31164):   androidx.media3.transformer.ExportException: Codec exception: CodecInfo{type=VideoDecoder, configurationFormat={exo-pixel-width-height-ratio-float=1.0, sar-width=1, track-id=1, is-forced-subtitle=0, allow-frame-drop=0, level=512, mime=video/avc, profile=2, bitrate=1032960, language=und, codecs-string=avc1.4D401F, csd-1=java.nio.HeapByteBuffer[pos=0 lim=8 cap=8], encoder-delay=0, sar-height=1, width=1280, is-autoselect=0, is-default=0, encoder-padding=0, frame-rate=25.0, max-input-size=122624, rotation-degrees=0, height=720, csd-0=java.nio.HeapByteBuffer[pos=0 lim=27 cap=27]}, name=OMX.Exynos.avc.dec}
W/TransformerInternal(31164):       at androidx.media3.transformer.DefaultCodec.createExportException(DefaultCodec.java:485)
W/TransformerInternal(31164):       at androidx.media3.transformer.DefaultCodec.createExportException(DefaultCodec.java:463)
W/TransformerInternal(31164):       at androidx.media3.transformer.DefaultCodec.maybeDequeueInputBuffer(DefaultCodec.java:206)
W/TransformerInternal(31164):       at androidx.media3.transformer.ExoAssetLoaderBaseRenderer.feedDecoderFromInput(ExoAssetLoaderBaseRenderer.java:288)
W/TransformerInternal(31164):       at androidx.media3.transformer.ExoAssetLoaderBaseRenderer.render(ExoAssetLoaderBaseRenderer.java:112)
W/TransformerInternal(31164):       at androidx.media3.exoplayer.RendererHolder.render(RendererHolder.java:392)
W/TransformerInternal(31164):       at androidx.media3.exoplayer.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:1378)
W/TransformerInternal(31164):       at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:707)
W/TransformerInternal(31164):       at android.os.Handler.dispatchMessage(Handler.java:102)
W/TransformerInternal(31164):       at android.os.Looper.loopOnce(Looper.java:226)
W/TransformerInternal(31164):       at android.os.Looper.loop(Looper.java:313)
W/TransformerInternal(31164):       at android.os.HandlerThread.run(HandlerThread.java:67)
W/TransformerInternal(31164):   Caused by: java.lang.IllegalStateException
W/TransformerInternal(31164):       at android.media.MediaCodec.getBuffer(Native Method)
W/TransformerInternal(31164):       at android.media.MediaCodec.getInputBuffer(MediaCodec.java:3993)
W/TransformerInternal(31164):       at androidx.media3.transformer.DefaultCodec.maybeDequeueInputBuffer(DefaultCodec.java:203)
W/TransformerInternal(31164):       ... 9 more
I/CCodec  (31164): state->set(RELEASING)
D/CCodecBufferChannel(31164): [c2.android.aac.decoder#627] MediaCodec discarded an unknown buffer
I/CCodec  (31164): [c2.android.aac.decoder] release(1)
D/CCodecBufferChannel(31164): [c2.android.aac.decoder#627] MediaCodec discarded an unknown buffer
D/CCodecBufferChannel(31164): [c2.android.aac.decoder#627] MediaCodec discarded an unknown buffer
D/CCodecBufferChannel(31164): [c2.android.aac.decoder#627] MediaCodec discarded an unknown buffer
D/CCodecBufferChannel(31164): [c2.android.aac.decoder#627] MediaCodec discarded an unknown buffer
D/CCodecBufferChannel(31164): [c2.android.aac.decoder#627] MediaCodec discarded an unknown buffer
I/CCodec  (31164): state->set(RELEASED)
I/hw-BpHwBinder(31164): onLastStrongRef automatically unlinking death recipients
I/MediaCodec(31164): Codec shutdown complete
D/MediaCodec(31164): flushMediametrics
D/MediaCodec(31164): flushMediametrics
I/ACodec  (31164): [OMX.Exynos.avc.dec] Now Executing->Idle
I/ExoPlayerImpl(31164): Release 81194e1 [AndroidXMedia3/1.9.0] [beyond1, SM-G973F, samsung, 31] [media3.common, media3.transformer, media3.exoplayer, media3.decoder, media3.datasource, media3.extractor, media3.effect]
I/CCodec  (31164): state->set(RELEASING)
D/CCodecBufferChannel(31164): [c2.sec.mp3.decoder#793] MediaCodec discarded an unknown buffer
D/CCodecBufferChannel(31164): [c2.sec.mp3.decoder#793] MediaCodec discarded an unknown buffer
I/CCodec  (31164): [c2.sec.mp3.decoder] release(1)
D/CCodecBufferChannel(31164): [c2.sec.mp3.decoder#793] MediaCodec discarded an unknown buffer
D/CCodecBufferChannel(31164): [c2.sec.mp3.decoder#793] MediaCodec discarded an unknown buffer
I/CCodec  (31164): state->set(RELEASED)
I/hw-BpHwBinder(31164): onLastStrongRef automatically unlinking death recipients
I/MediaCodec(31164): Codec shutdown complete
D/MediaCodec(31164): flushMediametrics
D/MediaCodec(31164): flushMediametrics
E/RenderVideo(31164): Render failed with export exception
E/RenderVideo(31164): androidx.media3.transformer.ExportException: Audio error: Error while registering input 1, audioFormat=AudioFormat[sampleRate=44100, channelCount=2, encoding=2]
E/RenderVideo(31164): 	at androidx.media3.transformer.AudioGraph.registerInput(AudioGraph.java:97)
E/RenderVideo(31164): 	at androidx.media3.transformer.AudioSampleExporter.getInput(AudioSampleExporter.java:137)
E/RenderVideo(31164): 	at androidx.media3.transformer.AudioSampleExporter.getInput(AudioSampleExporter.java:39)
E/RenderVideo(31164): 	at androidx.media3.transformer.TransformerInternal$SequenceAssetLoaderListener.onOutputFormat(TransformerInternal.java:674)
E/RenderVideo(31164): 	at androidx.media3.transformer.SequenceAssetLoader.onOutputFormat(SequenceAssetLoader.java:333)
E/RenderVideo(31164): 	at androidx.media3.transformer.SequenceAssetLoader.onOutputFormat(SequenceAssetLoader.java:61)
E/RenderVideo(31164): 	at androidx.media3.transformer.ExoAssetLoaderBaseRenderer.ensureSampleConsumerInitialized(ExoAssetLoaderBaseRenderer.java:272)
E/RenderVideo(31164): 	at androidx.media3.transformer.ExoAssetLoaderBaseRenderer.render(ExoAssetLoaderBaseRenderer.java:109)
E/RenderVideo(31164): 	at androidx.media3.exoplayer.RendererHolder.render(RendererHolder.java:392)
E/RenderVideo(31164): 	at androidx.media3.exoplayer.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:1378)
E/RenderVideo(31164): 	at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:707)
E/RenderVideo(31164): 	at android.os.Handler.dispatchMessage(Handler.java:102)
E/RenderVideo(31164): 	at android.os.Looper.loopOnce(Looper.java:226)
E/RenderVideo(31164): 	at android.os.Looper.loop(Looper.java:313)
E/RenderVideo(31164): 	at android.os.HandlerThread.run(HandlerThread.java:67)
E/RenderVideo(31164): Caused by: androidx.media3.common.audio.AudioProcessor$UnhandledAudioFormatException: Audio can not be modified to match downstream format AudioFormat[sampleRate=44100, channelCount=2, encoding=2]
E/RenderVideo(31164): 	at androidx.media3.transformer.AudioGraphInput.configureProcessing(AudioGraphInput.java:579)
E/RenderVideo(31164): 	at androidx.media3.transformer.AudioGraphInput.<init>(AudioGraphInput.java:115)
E/RenderVideo(31164): 	at androidx.media3.transformer.AudioGraph.registerInput(AudioGraph.java:90)
E/RenderVideo(31164): 	... 14 more
E/RenderVideo(31164): Export result - Duration: -9223372036854775807ms
E/RenderVideo(31164): Error rendering video: Audio error: Error while registering input 1, audioFormat=AudioFormat[sampleRate=44100, channelCount=2, encoding=2]
E/Surface (31164): getSlotFromBufferLocked: unknown buffer: 0x7a32b8ea50
W/ACodec  (31164): [OMX.Exynos.avc.dec] can not return buffer 27 to native window
E/Surface (31164): getSlotFromBufferLocked: unknown buffer: 0x7a32b7e430
W/ACodec  (31164): [OMX.Exynos.avc.dec] can not return buffer 26 to native window
E/Surface (31164): getSlotFromBufferLocked: unknown buffer: 0x7a32b81b50
W/ACodec  (31164): [OMX.Exynos.avc.dec] can not return buffer 25 to native window
E/Surface (31164): getSlotFromBufferLocked: unknown buffer: 0x7a32b91630
W/ACodec  (31164): [OMX.Exynos.avc.dec] can not return buffer 24 to native window
E/Surface (31164): getSlotFromBufferLocked: unknown buffer: 0x7a32b7e670
W/ACodec  (31164): [OMX.Exynos.avc.dec] can not return buffer 23 to native window
E/Surface (31164): getSlotFromBufferLocked: unknown buffer: 0x7a32b7f3f0
W/ACodec  (31164): [OMX.Exynos.avc.dec] can not return buffer 22 to native window
E/flutter (31164): [ERROR:flutter/runtime/dart_vm_initializer.cc(40)] Unhandled Exception: PlatformException(RENDER_ERROR, Audio error: Error while registering input 1, audioFormat=AudioFormat[sampleRate=44100, channelCount=2, encoding=2], null, null)
E/flutter (31164): #0      StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:653:7)
E/flutter (31164): #1      MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:367:18)
E/flutter (31164): <asynchronous suspension>
E/flutter (31164): #2      MethodChannelProVideoEditor.renderVideoToFile (package:pro_video_editor/core/platform/native_method_channel.dart:131:5)
E/flutter (31164): <asynchronous suspension>
E/flutter (31164): #3      _VideoRendererPageState._renderVideo (package:pro_video_editor_example/features/render/video_renderer_page.dart:378:7)
E/flutter (31164): <asynchronous suspension>
E/flutter (31164): #4      _VideoRendererPageState._customAudioMix (package:pro_video_editor_example/features/render/video_renderer_page.dart:206:5)
E/flutter (31164): <asynchronous suspension>
E/flutter (31164):
I/ACodec  (31164): [OMX.Exynos.avc.dec] Now Idle->Loaded
I/ACodec  (31164): [OMX.Exynos.avc.dec] Now Loaded
I/ACodec  (31164):  [OMX.Exynos.avc.dec] Now uninitialized
I/ACodec  (31164):  [] Now kWhatShutdownCompleted event : 8114
I/MediaCodec(31164): Codec shutdown complete
D/MediaCodec(31164): flushMediametrics
D/MediaCodec(31164): flushMediametrics
D/BufferPoolAccessor2.0(31164): bufferpool2 0x7a62b24488 : 0(0 size) total buffers - 0(0 size) used buffers - 1/6 (recycle/alloc) - 5/13 (fetch/transfer)
D/BufferPoolAccessor2.0(31164): bufferpool2 0x7a62c2faa8 : 0(0 size) total buffers - 0(0 size) used buffers - 0/5 (recycle/alloc) - 4/14 (fetch/transfer)
D/BufferPoolAccessor2.0(31164): evictor expired: 2, evicted: 2
D/BufferPoolAccessor2.0(31164): bufferpool2 0x7a62bb7d98 : 5(61440 size) total buffers - 4(49152 size) used buffers - 0/5 (recycle/alloc) - 0/0 (fetch/transfer)
D/BufferPoolAccessor2.0(31164): evictor expired: 1, evicted: 1

Additional information

Field Value
Media3 Version 1.9.0
Android Version 12
Model Name Galaxy S10
Model Number SM-G973F/DS

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions