SiliCompressor
SiliCompressor copied to clipboard
Can't play by ExoPlayer after compress (system video player can play but no sound)
Origin video info:
D:\develop\ffmpeg>ffmpeg -i C:\Users\Admin\Desktop\VID20210722180458.mp4
ffmpeg version git-2020-06-26-7447045 Copyright (c) 2000-2020 the FFmpeg developers
built with gcc 9.3.1 (GCC) 20200621
configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libsrt --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libgsm --disable-w32threads --enable-libmfx --enable-ffnvcodec --enable-cuda-llvm --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt --enable-amf
libavutil 56. 55.100 / 56. 55.100
libavcodec 58. 93.100 / 58. 93.100
libavformat 58. 47.100 / 58. 47.100
libavdevice 58. 11.100 / 58. 11.100
libavfilter 7. 86.100 / 7. 86.100
libswscale 5. 8.100 / 5. 8.100
libswresample 3. 8.100 / 3. 8.100
libpostproc 55. 8.100 / 55. 8.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'C:\Users\Admin\Desktop\VID20210722180458.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: isommp42
creation_time : 2021-07-22T10:09:29.000000Z
location : +31.2668+121.5390/
location-eng : +31.2668+121.5390/
com.android.version: 11
com.android.capture.fps: 30.000000
Duration: 00:04:30.50, start: 0.000000, bitrate: 50112 kb/s
Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuvj420p(pc, bt470bg/bt470bg/smpte170m), 3840x2160, 50005 kb/s, SAR 1:1 DAR 16:9, 30.06 fps, 30 tbr, 90k tbn, 180k tbc (default)
Metadata:
rotate : 90
creation_time : 2021-07-22T10:09:29.000000Z
handler_name : VideoHandle
Side data:
displaymatrix: rotation of -90.00 degrees
Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 96 kb/s (default)
Metadata:
creation_time : 2021-07-22T10:09:29.000000Z
handler_name : SoundHandle
At least one output file must be specified
Compressed video info:
D:\develop\ffmpeg>ffmpeg -i C:\Users\Admin\Desktop\HZT_VID_2021092610294217.mp4
ffmpeg version git-2020-06-26-7447045 Copyright (c) 2000-2020 the FFmpeg developers
built with gcc 9.3.1 (GCC) 20200621
configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libsrt --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libgsm --disable-w32threads --enable-libmfx --enable-ffnvcodec --enable-cuda-llvm --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt --enable-amf
libavutil 56. 55.100 / 56. 55.100
libavcodec 58. 93.100 / 58. 93.100
libavformat 58. 47.100 / 58. 47.100
libavdevice 58. 11.100 / 58. 11.100
libavfilter 7. 86.100 / 7. 86.100
libswscale 5. 8.100 / 5. 8.100
libswresample 3. 8.100 / 3. 8.100
libpostproc 55. 8.100 / 55. 8.100
[aac @ 000002d36d200000] Audio object type 0 is not implemented. Update your FFmpeg version to the newest one from Git. If the problem still occurs, it means that your file has a feature which has not been implemented.
[mov,mp4,m4a,3gp,3g2,mj2 @ 000002d36d1fc240] Failed to open codec in avformat_find_stream_info
[aac @ 000002d36d200000] Audio object type 0 is not implemented. Update your FFmpeg version to the newest one from Git. If the problem still occurs, it means that your file has a feature which has not been implemented.
Guessed Channel Layout for Input Stream #0.1 : stereo
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'C:\Users\Admin\Desktop\HZT_VID_2021092610294217.mp4':
Metadata:
major_brand : isom
minor_version : 0
compatible_brands: isom3gp4
creation_time : 2021-09-24T08:55:25.000000Z
Duration: 00:04:30.49, start: 0.000000, bitrate: 2199 kb/s
Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, smpte170m/bt470bg/smpte170m), 720x1280, 2099 kb/s, 30.06 fps, 30 tbr, 90k tbn, 180k tbc (default)
Metadata:
creation_time : 2021-09-24T08:51:18.000000Z
handler_name : VideoHandle
Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 96 kb/s (default)
Metadata:
creation_time : 2021-09-24T08:55:24.000000Z
handler_name : VideoHandle
At least one output file must be specified
ExoPlayer log:
W/AudioManager: Use of stream types is deprecated for operations other than volume control
W/AudioManager: See the documentation of requestAudioFocus() for what to use instead with android.media.AudioAttributes to qualify your playback use case
I/ExoPlayerImpl: Init 7e0aa2f [ExoPlayerLib/2.9.3] [RMX2051CN, RMX2051, realme, 30]
D/EventLogger: state [0.00, false, B]
D/EventLogger: sourceInfo [periodCount=1, windowCount=1
D/EventLogger: period [?]
D/EventLogger: window [?, false, false]
D/EventLogger: ]
D/EventLogger: loading [true]
D/EventLogger: sourceInfo [periodCount=1, windowCount=1
D/EventLogger: period [270.49]
D/EventLogger: window [270.49, true, false]
D/EventLogger: ]
D/EventLogger: Tracks [
D/EventLogger: Renderer:0 [
D/EventLogger: Group:0, adaptive_supported=N/A [
D/EventLogger: [X] Track:0, id=1, mimeType=video/avc, res=720x1280, supported=YES
D/EventLogger: ]
D/EventLogger: ]
D/EventLogger: Renderer:1 [
D/EventLogger: Group:0, adaptive_supported=N/A [
D/EventLogger: [X] Track:0, id=2, mimeType=audio/mp4a-latm, channels=2, sample_rate=48000, language=eng, supported=YES
D/EventLogger: ]
D/EventLogger: ]
D/EventLogger: ]
E/Parcel: Reading a NULL string not supported here.
D/ACodec: ACodec() ro.oplus.audio.effect.type = dolby ro.oplus.audio.dolby.type = v351
I/ACodec: new ACodec()
D/ACodec: Now uninitialized
D/OplusACodec: OplusACodec [113]:
D/OplusACodec: getBufferChannel: New
I/OMXClient: IOmx service obtained
I/ACodec: Successfully allocate component [OMX.qcom.video.decoder.avc]
D/ACodec: AllocateComponent OMX.qcom.video.decoder.avc success
D/ACodec: [OMX.qcom.video.decoder.avc] Now Loaded
D/SurfaceUtils: connecting to surface 0xa551e008, reason connectToSurface
I/MediaCodec: [OMX.qcom.video.decoder.avc] setting surface generation to 29722634
D/SurfaceUtils: disconnecting from surface 0xa551e008, reason connectToSurface(reconnect)
D/SurfaceUtils: connecting to surface 0xa551e008, reason connectToSurface(reconnect)
D/RefBase: RefBase: Explicit destruction, weak count = 0 (in 0x9fbfbfa0)
W/RefBase: CallStack::getCurrentInternal not linked, returning null
W/RefBase: CallStack::logStackInternal not linked
D/OplusACodec: [configureCodec:L822] OplusFeedbackInfo mFeedbackID:2773670400
D/IAtlas: IAtlas::init CallingPid 29026
D/IAtlas: IAtlas::init this 0xa84366c0
I/ACodec: configureCodec() mime = video/avc
D/OplusUtils: ACodec getComponentRole [92]: mime:video/avc
I/ExtendedACodec: setupVideoDecoder()
E/OplusACodec: [GetVideoCodingTypeFromMime:L691] mime:video/avc
I/ExtendedACodec: Decoder will be in frame by frame mode
W/ExtendedACodec: Failed to set frame packing format on component
D/ACodec: [OMX.qcom.video.decoder.avc] input format is AMessage(what = 0x00000000) = {
int32_t adaptive-playback = 1
int32_t roi-on = 0
string mime = "video/avc"
int32_t width = 720
int32_t height = 1280
}
[OMX.qcom.video.decoder.avc] output format is AMessage(what = 0x00000000) = {
int32_t color-range = 2
int32_t color-standard = 1
int32_t color-transfer = 3
int32_t roi-on = 0
string mime = "video/raw"
int32_t stride = 768
int32_t slice-height = 1280
int32_t color-format = 2141391878
Rect crop(0, 0, 719, 1279)
int32_t android._dataspace = 260
Buffer hdr-static-info = {
00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00000010: 00 00 00 00 00 00 00 00 00 .........
}
int32_t width = 720
int32_t height = 1280
}
D/ACodec: [OMX.qcom.video.decoder.avc] Now Loaded->Idle
D/ACodec: [OMX.qcom.video.decoder.avc] Allocating 8 buffers of size 7077888 (from 7077888 using PresetByteBuffer) on input port
D/SurfaceUtils: set up nativeWindow 0xa551e008 for 720x1280, color 0x7fa30c06, rotation 0, usage 0x20002900
D/ACodec: [OMX.qcom.video.decoder.avc] Now Idle->Executing
D/ACodec: [OMX.qcom.video.decoder.avc] Now Executing
D/CCodec: allocate(c2.android.aac.decoder)
I/CCodec: Created component [c2.android.aac.decoder]
D/CCodecConfig: read media type: audio/mp4a-latm
D/ReflectedParamUpdater: extent() != 1 for single value type: algo.buffers.max-count.values
D/ReflectedParamUpdater: extent() != 1 for single value type: output.subscribed-indices.values
D/ReflectedParamUpdater: extent() != 1 for single value type: input.buffers.allocator-ids.values
D/ReflectedParamUpdater: extent() != 1 for single value type: output.buffers.allocator-ids.values
D/ReflectedParamUpdater: extent() != 1 for single value type: algo.buffers.allocator-ids.values
D/ReflectedParamUpdater: extent() != 1 for single value type: output.buffers.pool-ids.values
D/ReflectedParamUpdater: extent() != 1 for single value type: algo.buffers.pool-ids.values
I/CCodecConfig: query failed after returning 19 values (BAD_INDEX)
D/CCodecConfig: c2 config diff is Dict {
c2::u32 coded.aac-packaging.value = 0
c2::u32 coded.bitrate.value = 64000
c2::u32 coded.pl.level = 0
c2::u32 coded.pl.profile = 8192
c2::i32 coding.drc.album-mode.value = 0
c2::float coding.drc.attenuation-factor.value = 1
c2::float coding.drc.boost-factor.value = 1
c2::i32 coding.drc.compression-mode.value = 3
c2::i32 coding.drc.effect-type.value = 3
c2::float coding.drc.encoded-level.value = 0.25
c2::float coding.drc.reference-level.value = -16
c2::u32 input.buffers.max-size.value = 8192
c2::u32 input.delay.value = 0
string input.media-type.value = "audio/mp4a-latm"
c2::u32 output.delay.value = 2
c2::float output.drc.output-loudness.value = 0.25
string output.media-type.value = "audio/raw"
c2::u32 raw.channel-count.value = 1
c2::u32 raw.max-channel-count.value = 8
c2::u32 raw.sample-rate.value = 44100
}
D/CCodec: [c2.android.aac.decoder] buffers are bound to CCodec for this session
D/CCodecConfig: no c2 equivalents for flags
D/CCodecConfig: config failed => CORRUPTED
D/CCodecConfig: c2 config diff is c2::u32 raw.channel-count.value = 2
c2::u32 raw.sample-rate.value = 48000
W/Codec2Client: query -- param skipped: index = 1107298332.
D/CCodec: client requested max input size 414, which is smaller than what component recommended (8192); overriding with component recommendation.
W/CCodec: 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: setup formats input: AMessage(what = 0x00000000) = {
int32_t aac-drc-album-mode = 0
int32_t aac-drc-boost-level = 127
int32_t aac-drc-cut-level = 127
int32_t aac-drc-effect-type = 3
int32_t aac-drc-heavy-compression = 3
int32_t aac-encoded-target-level = -1
int32_t aac-max-output-channel_count = 8
int32_t aac-target-ref-level = 64
int32_t channel-count = 2
int32_t level = 0
int32_t max-input-size = 8192
string mime = "audio/mp4a-latm"
int32_t profile = 2
int32_t sample-rate = 48000
} and output: AMessage(what = 0x00000000) = {
int32_t aac-drc-album-mode = 0
int32_t aac-drc-boost-level = 127
int32_t aac-drc-cut-level = 127
int32_t aac-drc-effect-type = 3
int32_t aac-drc-heavy-compression = 3
int32_t aac-drc-output-loudness = -1
int32_t aac-encoded-target-level = -1
int32_t aac-max-output-channel_count = 8
int32_t aac-target-ref-level = 64
int32_t channel-count = 2
string mime = "audio/raw"
int32_t sample-rate = 48000
}
[OMX.qcom.video.decoder.avc] output format is AMessage(what = 0x00000000) = {
[OMX.qcom.video.decoder.avc] output format is AMessage(what = 0x00000000) = {
int32_t color-range = 2
int32_t color-standard = 2
int32_t color-transfer = 3
int32_t roi-on = 0
string mime = "video/raw"
int32_t stride = 768
int32_t slice-height = 1280
int32_t color-format = 2141391878
Rect crop(0, 0, 719, 1279)
int32_t android._dataspace = 258
Buffer hdr-static-info = {
00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00000010: 00 00 00 00 00 00 00 00 00 .........
}
int32_t width = 720
int32_t height = 1280
}
W/Codec2Client: query -- param skipped: index = 1342179345.
W/Codec2Client: query -- param skipped: index = 2415921170.
W/Codec2Client: query -- param skipped: index = 1610614798.
E/FMQ: grantorIdx must be less than 3
E/FMQ: grantorIdx must be less than 3
D/CCodecBufferChannel: [c2.android.aac.decoder#622] Created input block pool with allocatorID 16 => poolID 20 - OK (0)
D/BufferPoolAccessor2.0: bufferpool2 0xb5810d58 : 0(0 size) total buffers - 0(0 size) used buffers - 1/6 (recycle/alloc) - 5/92 (fetch/transfer)
D/BufferPoolAccessor2.0: Destruction - bufferpool2 0xb5810d58 cached: 0/0M, 0/0% in use; allocs: 6, 17% recycled; transfers: 92, 95% unfetched
D/BufferPoolAccessor2.0: bufferpool2 0xb5855198 : 0(0 size) total buffers - 0(0 size) used buffers - 1/6 (recycle/alloc) - 1/2 (fetch/transfer)
D/BufferPoolAccessor2.0: Destruction - bufferpool2 0xb5855198 cached: 0/0M, 0/0% in use; allocs: 6, 17% recycled; transfers: 2, 50% unfetched
I/CCodecBufferChannel: [c2.android.aac.decoder#622] Created output block pool with allocatorID 16 => poolID 547 - OK
D/CCodecBufferChannel: [c2.android.aac.decoder#622] Configured output block pool ids 547 => OK
D/CCodecBufferChannel: [c2.android.aac.decoder#622] start: updating output delay 2
E/FMQ: grantorIdx must be less than 3
D/CCodecBufferChannel: [c2.android.aac.decoder#622] work failed to complete: 14
E/MediaCodec: Codec reported err 0xe, actionCode 0, while in state 6
E/ExoPlayerImplInternal: Internal runtime error.
java.lang.IllegalStateException
at android.media.MediaCodec.native_dequeueOutputBuffer(Native Method)
at android.media.MediaCodec.dequeueOutputBuffer(MediaCodec.java:3451)
at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.drainOutputBuffer(MediaCodecRenderer.java:1287)
at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:663)
at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:536)
at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:303)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:260)
at android.os.HandlerThread.run(HandlerThread.java:67)
I/OplusFeedbackInfo: [sendFeedbackInfo:L290] send:MM_FB_EventID#21001#ClientPid#29026#ReportLevel#0#timeUsage#0#videoComponent#OMX.qcom.video.decoder.avc#videoHeight#1280#videoMime#video/avc#videoWidth#720
D/ACodec: [OMX.qcom.video.decoder.avc] Now Executing->Idle
D/ACodec: [OMX.qcom.video.decoder.avc] Now Idle->Loaded
D/ACodec: [OMX.qcom.video.decoder.avc] Now Loaded
D/SurfaceUtils: disconnecting from surface 0xa551e008, reason disconnectFromSurface
I/OplusFeedbackInfo: [sendFeedbackInfo:L290] send:isHDRVideo#false#timeUsage#0#videoComponent#OMX.qcom.video.decoder.avc#videoHeight#1280#videoMime#video/avc#videoWidth#720
D/CCodecBufferChannel: [c2.android.aac.decoder#622] MediaCodec discarded an unknown buffer
I/chatty: uid=10330(com.haizitong.hzt.yuan) MediaCodec_loop identical 1 line
D/CCodecBufferChannel: [c2.android.aac.decoder#622] MediaCodec discarded an unknown buffer
E/ExoPlayerImplInternal: Stop failed.
java.lang.IllegalStateException
at android.media.MediaCodec.native_stop(Native Method)
at android.media.MediaCodec.stop(MediaCodec.java:2250)
at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.releaseCodec(MediaCodecRenderer.java:608)
at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.onDisabled(MediaCodecRenderer.java:562)
at com.google.android.exoplayer2.audio.MediaCodecAudioRenderer.onDisabled(MediaCodecAudioRenderer.java:542)
at com.google.android.exoplayer2.BaseRenderer.disable(BaseRenderer.java:153)
at com.google.android.exoplayer2.ExoPlayerImplInternal.disableRenderer(ExoPlayerImplInternal.java:983)
at com.google.android.exoplayer2.ExoPlayerImplInternal.resetInternal(ExoPlayerImplInternal.java:771)
at com.google.android.exoplayer2.ExoPlayerImplInternal.stopInternal(ExoPlayerImplInternal.java:742)
at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:358)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:260)
at android.os.HandlerThread.run(HandlerThread.java:67)
E/EventLogger: playerFailed [8.26]
com.google.android.exoplayer2.ExoPlaybackException: java.lang.IllegalStateException
at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:359)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:260)
at android.os.HandlerThread.run(HandlerThread.java:67)
Caused by: java.lang.IllegalStateException
at android.media.MediaCodec.native_dequeueOutputBuffer(Native Method)
at android.media.MediaCodec.dequeueOutputBuffer(MediaCodec.java:3451)
at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.drainOutputBuffer(MediaCodecRenderer.java:1287)
at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:663)
at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:536)
at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:303)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:260)
at android.os.HandlerThread.run(HandlerThread.java:67)
D/EventLogger: loading [false]
D/EventLogger: state [8.26, false, I]
I/hw-BpHwBinder: onLastStrongRef automatically unlinking death recipients
D/ACodec: Now uninitialized
D/OplusACodec: ~OplusACodec [127]:
I/ACodec: ~ACodec()
I/ExoPlayerImpl: Release 7e0aa2f [ExoPlayerLib/2.9.3] [RMX2051CN, RMX2051, realme, 30] [goog.exo.core]
D/ColorViewRootUtil: initSwipState, isDisplayCompatApp false
D/ColorViewRootUtil: mScreenHeight 2400, mScreenWidth 1080
D/WindowManager: Add to mViews: androidx.constraintlayout.widget.ConstraintLayout{1f429b8 V.E...... ......I. 0,0-0,0},pkg= com.haizitong.hzt.yuan
D/BufferPoolAccessor2.0: bufferpool2 0xa1c60c98 : 0(0 size) total buffers - 0(0 size) used buffers - 1/6 (recycle/alloc) - 1/2 (fetch/transfer)
D/BufferPoolAccessor2.0: evictor expired: 1, evicted: 1
D/BufferPoolAccessor2.0: evictor expired: 2, evicted: 0
This combination worked for me:
implementation 'com.iceteck.silicompressorr:silicompressor:2.2.3'
implementation ('com.googlecode.mp4parser:isoparser:1.0.6') {
exclude group: 'org.aspectj', module: 'aspectjrt'
}
This combination worked for me:
implementation 'com.iceteck.silicompressorr:silicompressor:2.2.3' implementation ('com.googlecode.mp4parser:isoparser:1.0.6') { exclude group: 'org.aspectj', module: 'aspectjrt' }
Thanks @UrbanFercec, some video is compressed success, but some is failed.
The audio handler of failed video change to VideoHandle
, @Tourenathan-G5organisation is somewhere mistaken?
implementation ('com.googlecode.mp4parser:isoparser:1.0.6') { exclude group: 'org.aspectj', module: 'aspectjrt' }
I don't know what it means, but it works for me.