abdelaziz-mahdy / flutter_meedu_videoplayer

Cross-Platform Video Player for flutter
https://abdelaziz-mahdy.github.io/flutter_meedu_videoplayer/
MIT License
132 stars 69 forks source link

Another exception was thrown #117

Closed micodev closed 1 year ago

micodev commented 1 year ago

Another exception was thrown: Cannot interpolate between finite constraints and unbounded constraints.

using flutter_meedu_videoplayer: 4.2.11-dev-8

abdelaziz-mahdy commented 1 year ago

Can you try, on latest version and on which platform does that happen?

And are you playing a live stream?

micodev commented 1 year ago

@zezo357 I am using 4.2.11-dev-8 bc of subtitle customization and as I said I was playing a video not a stream also I am running this on android

abdelaziz-mahdy commented 1 year ago

@zezo357 I am using 4.2.11-dev-8 bc of subtitle customization and as I said I was playing a video not a stream also I am running this on android

the subtitle customization, is available in 4.2.12

micodev commented 1 year ago

let me upgrade it @zezo357 and I will try to test it again thanks man.

abdelaziz-mahdy commented 1 year ago

can you show all logs just to be able to find the problem?

micodev commented 1 year ago

Is there any flag for that , or you need the default once ?

abdelaziz-mahdy commented 1 year ago

Is there any flag for that , or you need the default once ?

all the exception stack trace, since i cant find out from where it was happening and why

no extra flags needed, just the flutter error logs

micodev commented 1 year ago

E/MediaCodecVideoRenderer(30174): Video codec error E/MediaCodecVideoRenderer(30174): java.lang.IllegalStateException E/MediaCodecVideoRenderer(30174): at android.media.MediaCodec.native_dequeueInputBuffer(Native Method) E/MediaCodecVideoRenderer(30174): at android.media.MediaCodec.dequeueInputBuffer(MediaCodec.java:2855) E/MediaCodecVideoRenderer(30174): at h3.x.n(:99) E/MediaCodecVideoRenderer(30174): at h3.o.k0(:1189) E/MediaCodecVideoRenderer(30174): at h3.o.l(:784) E/MediaCodecVideoRenderer(30174): at o2.m1.p(:1007) E/MediaCodecVideoRenderer(30174): at o2.m1.handleMessage(:502) E/MediaCodecVideoRenderer(30174): at android.os.Handler.dispatchMessage(Handler.java:102) E/MediaCodecVideoRenderer(30174): at android.os.Looper.loop(Looper.java:223) E/MediaCodecVideoRenderer(30174): at android.os.HandlerThread.run(HandlerThread.java:67) E/ExoPlayerImplInternal(30174): Playback error /ExoPlayerImplInternal(30174): o2.q: MediaCodecVideoRenderer error, index=0, format=Format(1, null, null, video/avc, avc1.64001E, -1, null, [854, 356, 23.97602], [-1, -1]), format_supported=YES E/ExoPlayerImplInternal(30174): at o2.m1.handleMessage(:578) E/ExoPlayerImplInternal(30174): at android.os.Handler.dispatchMessage(Handler.java:102) E/ExoPlayerImplInternal(30174): at android.os.Looper.loop(Looper.java:223) E/ExoPlayerImplInternal(30174): at android.os.HandlerThread.run(HandlerThread.java:67) E/ExoPlayerImplInternal(30174): Caused by: q4.g: Decoder failed: c2.android.avc.decoder E/ExoPlayerImplInternal(30174): at q4.h.d0(:1639) E/ExoPlayerImplInternal(30174): at h3.o.l(:803) E/ExoPlayerImplInternal(30174): at o2.m1.p(:1007) E/ExoPlayerImplInternal(30174): at o2.m1.handleMessage(:502) E/ExoPlayerImplInternal(30174): ... 3 more E/ExoPlayerImplInternal(30174): Caused by: java.lang.IllegalStateException E/ExoPlayerImplInternal(30174): at android.media.MediaCodec.native_dequeueInputBuffer(Native Method) E/ExoPlayerImplInternal(30174): at android.media.MediaCodec.dequeueInputBuffer(MediaCodec.java:2855) E/ExoPlayerImplInternal(30174): at h3.x.n(:99) E/ExoPlayerImplInternal(30174): at h3.o.k0(:1189) E/ExoPlayerImplInternal(30174): at h3.o.l(:784) E/ExoPlayerImplInternal(30174): ... 5 more E/ExoPlayerImplInternal(30174): Disable failed. E/ExoPlayerImplInternal(30174): java.lang.IllegalStateException E/ExoPlayerImplInternal(30174): at android.media.MediaCodec.native_flush(Native Method) E/ExoPlayerImplInternal(30174): at android.media.MediaCodec.flush(MediaCodec.java:2298) E/ExoPlayerImplInternal(30174): at h3.x.flush(:166) E/ExoPlayerImplInternal(30174): at h3.o.l0(:867) E/ExoPlayerImplInternal(30174): at h3.o.n0(:860) E/ExoPlayerImplInternal(30174): at h3.o.H(:700) E/ExoPlayerImplInternal(30174): at q4.h.H(:609) E/ExoPlayerImplInternal(30174): at o2.f.e(:186) E/ExoPlayerImplInternal(30174): at o2.m1.o(:1671) E/ExoPlayerImplInternal(30174): at o2.m1.q0(:1412) E/ExoPlayerImplInternal(30174): at o2.m1.i1(:1373) E/ExoPlayerImplInternal(30174): at o2.m1.handleMessage(:594) E/ExoPlayerImplInternal(30174): at android.os.Handler.dispatchMessage(Handler.java:102) E/ExoPlayerImplInternal(30174): at android.os.Looper.loop(Looper.java:223) E/ExoPlayerImplInternal(30174): at android.os.HandlerThread.run(HandlerThread.java:67) D/CCodecBuffers(30174): [c2.android.aac.decoder#612:1D-Output.Impl[N]] Client returned a buffer it does not own according to our record: 0 D/CCodecBuffers(30174): [c2.android.aac.decoder#612:1D-Output.Impl[N]] Client returned a buffer it does not own according to our record: 1 D/CCodecBuffers(30174): [c2.android.aac.decoder#612:1D-Output.Impl[N]] Client returned a buffer it does not own according to our record: 2 D/CCodecBuffers(30174): [c2.android.aac.decoder#612:1D-Output.Impl[N]] Client returned a buffer it does not own according to our record: 3 I/CCodecConfig(30174): query failed after returning 19 values (BAD_INDEX) D/CCodecConfig(30174): c2 config diff is c2::i32 coding.drc.compression-mode.value = 3 W/Codec2Client(30174): query -- param skipped: index = 1342179345. W/Codec2Client(30174): query -- param skipped: index = 2415921170. W/Codec2Client(30174): query -- param skipped: index = 1610614798. D/CCodecBufferChannel(30174): [c2.android.aac.decoder#612] MediaCodec discarded an unknown buffer I/chatty (30174): uid=10169(net.halasat.tv) identical 2 lines D/CCodecBufferChannel(30174): [c2.android.aac.decoder#612] MediaCodec discarded an unknown buffer D/BufferPoolAccessor2.0(30174): bufferpool2 0xb4000074ffe1fdc8 : 0(0 size) total buffers - 0(0 size) used buffers - 1/7 (recycle/alloc) - 6/287 (fetch/transfer) I/hw-BpHwBinder(30174): onLastStrongRef automatically unlinking death recipients ════════════════════════════════════════════════════════════════════════════════════════════════════ Another exception was thrown: Cannot interpolate between finite constraints and unbounded constraints. Another exception was thrown: Cannot interpolate between finite constraints and unbounded constraints. Another exception was thrown: Cannot interpolate between finite constraints and unbounded constraints. Another exception was thrown: Cannot interpolate between finite constraints and unbounded constraints. Another exception was thrown: Cannot interpolate between finite constraints and unbounded constraints. Another exception was thrown: Cannot interpolate between finite constraints and unbounded constraints. Another exception was thrown: Cannot interpolate between finite constraints and unbounded constraints. Another exception was thrown: Cannot interpolate between finite constraints and unbounded constraints. Another exception was thrown: Cannot interpolate between finite constraints and unbounded constraints. Another exception was thrown: Cannot interpolate between finite constraints and unbounded constraints. Another exception was thrown: Cannot interpolate between finite constraints and unbounded constraints. Another exception was thrown: Cannot interpolate between finite constraints and unbounded constraints. Another exception was thrown: Cannot interpolate between finite constraints and unbounded constraints.

abdelaziz-mahdy commented 1 year ago

/ExoPlayerImplInternal(30174): o2.q: MediaCodecVideoRenderer error, index=0, format=Format(1, null, null, video/avc, avc1.64001E, -1, null, [854, 356, 23.97602], [-1, -1]), format_supported=YES E/ExoPlayerImplInternal(30174): at o2.m1.handleMessage(:578) E/ExoPlayerImplInternal(30174): at android.os.Handler.dispatchMessage(Handler.java:102) E/ExoPlayerImplInternal(30174): at android.os.Looper.loop(Looper.java:223) E/ExoPlayerImplInternal(30174): at android.os.HandlerThread.run(HandlerThread.java:67) E/ExoPlayerImplInternal(30174): Caused by: q4.g: Decoder failed: c2.android.avc.decoder E/ExoPlayerImplInternal(30174): at q4.h.d0(:1639) E/ExoPlayerImplInternal(30174): at h3.o.l(:803) E/ExoPlayerImplInternal(30174): at o2.m1.p(:1007) E/ExoPlayerImplInternal(30174): at o2.m1.handleMessage(:502) E/ExoPlayerImplInternal(30174): ... 3 more E/ExoPlayerImplInternal(30174): Caused by: java.lang.IllegalStateException E/ExoPlayerImplInternal(30174): at android.media.MediaCodec.native_dequeueInputBuffer(Native Method) E/ExoPlayerImplInternal(30174): at android.media.MediaCodec.dequeueInputBuffer(MediaCodec.java:2855) E/ExoPlayerImplInternal(30174): at h3.x.n(:99) E/ExoPlayerImplInternal(30174): at h3.o.k0(:1189) E/ExoPlayerImplInternal(30174): at h3.o.l(:784) E/ExoPlayerImplInternal(30174): ... 5 more E/ExoPlayerImplInternal(30174): Disable failed. E/ExoPlayerImplInternal(30174): java.lang.IllegalStateException E/ExoPlayerImplInternal(30174): at android.media.MediaCodec.native_flush(Native Method) E/ExoPlayerImplInternal(30174): at android.media.MediaCodec.flush(MediaCodec.java:2298) E/ExoPlayerImplInternal(30174): at h3.x.flush(:166) E/ExoPlayerImplInternal(30174): at h3.o.l0(:867) E/ExoPlayerImplInternal(30174): at h3.o.n0(:860) E/ExoPlayerImplInternal(30174): at h3.o.H(:700) E/ExoPlayerImplInternal(30174): at q4.h.H(:609) E/ExoPlayerImplInternal(30174): at o2.f.e(:186) E/ExoPlayerImplInternal(30174): at o2.m1.o(:1671) E/ExoPlayerImplInternal(30174): at o2.m1.q0(:1412) E/ExoPlayerImplInternal(30174): at o2.m1.i1(:1373) E/ExoPlayerImplInternal(30174): at o2.m1.handleMessage(:594) E/ExoPlayerImplInternal(30174): at android.os.Handler.dispatchMessage(Handler.java:102) E/ExoPlayerImplInternal(30174): at android.os.Looper.loop(Looper.java:223) E/ExoPlayerImplInternal(30174): at android.os.HandlerThread.run(HandlerThread.java:67) D/CCodecBuffers(30174): [c2.android.aac.decoder#612:1D-Output.Impl[N]] Client returned a buffer it does not own according to our record: 0 D/CCodecBuffers(30174): [c2.android.aac.decoder#612:1D-Output.Impl[N]] Client returned a buffer it does not own according to our record: 1 D/CCodecBuffers(30174): [c2.android.aac.decoder#612:1D-Output.Impl[N]] Client returned a buffer it does not own according to our record: 2 D/CCodecBuffers(30174): [c2.android.aac.decoder#612:1D-Output.Impl[N]] Client returned a buffer it does not own according to our record: 3 I/CCodecConfig(30174): query failed after returning 19 values (BAD_INDEX) D/CCodecConfig(30174): c2 config diff is c2::i32 coding.drc.compression-mode.value = 3 W/Codec2Client(30174): query -- param skipped: index = 1342179345. W/Codec2Client(30174): query -- param skipped: index = 2415921170. W/Codec2Client(30174): query -- param skipped: index = 1610614798. D/CCodecBufferChannel(30174): [c2.android.aac.decoder#612] MediaCodec discarded an unknown buffer I/chatty (30174): uid=10169(net.halasat.tv) identical 2 lines D/CCodecBufferChannel(30174): [c2.android.aac.decoder#612] MediaCodec discarded an unknown buffer D/BufferPoolAccessor2.0(30174): bufferpool2 0xb4000074ffe1fdc8 : 0(0 size) total buffers - 0(0 size) used buffers - 1/7 (recycle/alloc) - 6/287 (fetch/transfer) I/hw-BpHwBinder(30174): onLastStrongRef automatically unlinking death recipients ════════════════════════════════════════════════════════════════════════════════════════════════════ Another exception was thrown: Cannot interpolate between finite constraints and unbounded constraints. Another exception was thrown: Cannot interpolate between finite constraints and unbounded constraints. Another exception was thrown: Cannot interpolate between finite constraints and unbounded constraints. Another exception was thrown: Cannot interpolate between finite constraints and unbounded constraints. Another exception was thrown: Cannot interpolate between finite constraints and unbounded constraints. Another exception was thrown: Cannot interpolate between finite constraints and unbounded constraints. Another exception was thrown: Cannot interpolate between finite constraints and unbounded constraints. Another exception was thrown: Cannot interpolate between finite constraints and unbounded constraints. Another exception was thrown: Cannot interpolate between finite constraints and unbounded constraints. Another exception was thrown: Cannot interpolate between finite constraints and unbounded constraints. Another exception was thrown: Cannot interpolate between finite constraints and unbounded constraints. Another exception was thrown: Cannot interpolate between finite constraints and unbounded constraints. Another exception was thrown: Cannot interpolate between finite constraints and unbounded constraints.

can you enable media_kit for android and test again, it maybe a problem with exoplayer

abdelaziz-mahdy commented 1 year ago

Android (replace original video_player with media_kit one) Just add this package in and set androidUseMediaKit to true in initMeeduPlayer dependencies: ... media_kit_libs_android_video: ^1.0.6 # Android package for video native libraries.

micodev commented 1 year ago

@zezo357 it works well using this method but there is another one appeared ,

when I want to play from exist seek using setDataSource with seekTo first it get the exact duration then it start from zero.

abdelaziz-mahdy commented 1 year ago

@zezo357 it works well using this method but there is another one appeared ,

when I want to play from exist seek using setDataSource with seekTo first it get the exact duration then it start from zero.

can you show me how you use your code? and from my testing it should work as expected, tested in examples

micodev commented 1 year ago

I will upload a video of the issue I am 100% sure not a code problem bc when I seek manually after that it continue from my last seek that it should from first place .

abdelaziz-mahdy commented 1 year ago

@zezo357 it works well using this method but there is another one appeared , when I want to play from exist seek using setDataSource with seekTo first it get the exact duration then it start from zero.

can you show me how you use your code? and from my testing it should work as expected, tested in examples

m3u8_page_example, works as expected

micodev commented 1 year ago
.setDataSource(playerDataSource,
        autoplay: true,
        seekTo: history != null &&
                history.episode_number == this.media.value?.episodeNumber
            ? Duration(seconds: history.startDuration!)
            : Duration.zero)

I am using this where history.startDuration! is an integer on top of that it was working perfect on exo_player approach

micodev commented 1 year ago

https://github.com/zezo357/flutter_meedu_videoplayer/assets/17555698/6aeff0fe-a6ce-4f05-a3a3-92052b04abd8

abdelaziz-mahdy commented 1 year ago
.setDataSource(playerDataSource,
        autoplay: true,
        seekTo: history != null &&
                history.episode_number == this.media.value?.episodeNumber
            ? Duration(seconds: history.startDuration!)
            : Duration.zero)

I am using this where history.startDuration! is an integer on top of that it was working perfect on exo_player approach

can you recheck the history != null && history.episode_number == this.media.value?.episodeNumber ? Duration(seconds: history.startDuration!) : Duration.zero) value?

ezgif.com-gif-to-mp4.mp4

btw you dont need to close the video player and reopen it again, you can set the player datasource on same screen

micodev commented 1 year ago
.setDataSource(playerDataSource,
        autoplay: true,
        seekTo: history != null &&
                history.episode_number == this.media.value?.episodeNumber
            ? Duration(seconds: history.startDuration!)
            : Duration.zero)

I am using this where history.startDuration! is an integer on top of that it was working perfect on exo_player approach

can you recheck the history != null && history.episode_number == this.media.value?.episodeNumber ? Duration(seconds: history.startDuration!) : Duration.zero) value?

ezgif.com-gif-to-mp4.mp4

btw you dont need to close the video player and reopen it again, you can set the player datasource on same screen

I'm doing resume from last duration on my cinema app so it should be like that. 2 - the value was 4430 in seconds.

micodev commented 1 year ago

ezgif.com-gif-to-mp4.mp4

please check this and take a closer look when video at 9 seconds you will see it works fine then shift to zero.

micodev commented 1 year ago
I/flutter ( 3432): Duration is 2:20:55.136000
I/flutter ( 3432): Called seek function to0:20:32.000000
I/flutter ( 3432): position in seek function is 0:20:32.000000
I/flutter ( 3432): duration in seek function is 2:20:55.136000
I/flutter ( 3432): gpu

from log

abdelaziz-mahdy commented 1 year ago

yes i was just able to reproduce it, right its 1:00 AM , i will recheck again tomorrow for a fix, keep in mind that didnt happen on desktop this only happens on android , which is weird ,

micodev commented 1 year ago

yes i was just able to reproduce it, right its 1:00 AM , i will recheck again tomorrow for a fix, keep in mind that didnt happen on desktop this only happens on android , which is weird ,

ok bro, rabi ya7mek keep it up , I am waiting for the fix tho. and GN

abdelaziz-mahdy commented 1 year ago

can you test again using this , i made a function to check if seek is done or not and redo it ,

not a clean fix, but since i dont know the cause of it this what i am going with to make it work for now

use github package in dependency

  flutter_meedu_videoplayer:
    git: 
      url: https://github.com/zezo357/flutter_meedu_videoplayer
      path: package/
micodev commented 1 year ago

lemme see , btw the error of pausing using exo_player not committed at real device only emulator.

micodev commented 1 year ago

it works fine now @zezo357 using media_kit with resume from where is left.

abdelaziz-mahdy commented 1 year ago

it works fine now @zezo357 using media_kit with resume from where is left.

Will publish new release then , thank you for confirming.

abdelaziz-mahdy commented 1 year ago

released in 4.2.13