Exoplayer issue while playing video on Video player - flutter

Unhandled Exception: PlatformException(VideoError, Video player had error com.google.android.exoplayer2.ExoPlaybackException: MediaCodecVideoRenderer error, index=0, format=Format(1, null, null, video/avc, avc1.64001E, -1, null, [480, 480, 29.999588], [-1, -1]), format_supported=YES, null, null)

Related

Unable to play .m3u8 file with flutter package better player

I have a .m3u8 file that contains information about a video but I am unable to play it using the BetterPlayer Flutter package.
This is my sample code
var dataSource = BetterPlayerDataSource(
BetterPlayerDataSourceType.file,
"/var/mobile/Containers/Data/Application/B0391873-25D4-471A-AB13-05D5FF8701F9/Documents/content.publicId/test.m3u8",
subtitles: null,
headers: {"cookie":"COOKIE_FOR_AWS_CLOUDFRONT_ACCESS"},
liveStream: true
);
But I keep getting this error:
GetDataFromUrl failed: Invalid argument(s): No host specified in URI /var/mobile/Containers/Data/Application/FE19C886-73B8-49C0-A770-6BAEAD354947/Documents/content.publicId/test.m3u8
Failed to load video: Error Domain=CoreMediaErrorDomain Code=-12865
"(null)" [VERBOSE-2:ui_dart_state.cc(209)] Unhandled Exception:
PlatformException(VideoError, Failed to load video: The operation
couldn’t be completed. (CoreMediaErrorDomain error -12865.), null,
null)
These are the contents of the .m3u8 file:
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-ALLOW-CACHE:YES
#EXT-X-TARGETDURATION:37
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-KEY:METHOD=AES-128, URI="https://PATH_TO_ENCRYPTION_KEY",IV=0x413873f3924c752d99c7083c0c99931c
#EXTINF:36.440000, https://example.com/test_480p_0000.ts
#EXTINF:28.040000, https://example.com/test_480p_0001.ts
#EXTINF:28.360000, https://example.com/test_480p_0002.ts
#EXTINF:29.920000, https://example.com/test_480p_0003.ts
#EXTINF:36.920000, https://example.com/test_480p_0004.ts
#EXTINF:21.040000, https://example.com/test_480p_0005.ts
#EXT-X-ENDLIST

Flutter audioplayers stop playing after multiple play events

i'm using this code to play sound whenever I click on a widget.
Future<void> playMySound(String who) async{
AudioPlayer advancedPlayer = new AudioPlayer();
audioCache = new AudioCache(fixedPlayer: advancedPlayer);
audioCache.clearCache();
String localFilePath;
audioCache.play('roomSounds/$who', mode: PlayerMode.LOW_LATENCY);
}
Problem:
Whenever I tap for example 15 times on a widget that would play the sound, it would stop playing and throw the following stack:
E/MediaPlayer( 5793): Error (-38,0)
I/flutter ( 5793): hello 0.0
E/MediaPlayerNative( 5793): error (1, -19)
E/MediaPlayer( 5793): Error (1,-19)
E/MediaPlayerNative( 5793): pause called in state 0, mPlayer(0x77ceaa80)
E/MediaPlayerNative( 5793): error (-38, 0)
E/MediaPlayerNative( 5793): Attempt to perform seekTo in wrong state: mPlayer=0x77ceaa80, mCurrentState=0
E/MediaPlayerNative( 5793): error (-38, 0)
E/MediaPlayer( 5793): Error (-38,0)
E/MediaPlayer( 5793): Error (-38,0)
I've tried to use audioCache.clearCache() but with no effect. Only after reloading the application it is possible to play any sound at all.

Flutter: Camera disconnect exception when other camera apps are opened

I'm currently using the flutter camera package to record and save videos, but I've noticed that the camera preview runs into an exception when the device's camera is opened on another app or when face unlock is used on the lock screen.
I've tried using didChangeAppLifecycleState to possibly fetch or reinitialize the camera, but there's no success yet.
await model.fetchCameras();
if (model.cameras.isNotEmpty) {
await model.onNewCameraSelected(model.cameras[model.cameraIndex], true);
}
}
This issue is currently opened here and here, but haven't been resolved.
I get this exception when the device's camera is opened in another app. I tried disposing the camera and reinitializing it in the sample code above, but it doesn't work.
E/CameraCaptureSession(31468): android.hardware.camera2.CameraAccessException: CAMERA_DISCONNECTED (2): cancelRequest:458: Camera device no longer alive
E/CameraCaptureSession(31468): at android.hardware.camera2.CameraManager.throwAsPublicException(CameraManager.java:814)
E/CameraCaptureSession(31468): at android.hardware.camera2.impl.ICameraDeviceUserWrapper.cancelRequest(ICameraDeviceUserWrapper.java:95)
E/CameraCaptureSession(31468): at android.hardware.camera2.impl.CameraDeviceImpl.stopRepeating(CameraDeviceImpl.java:1134)
E/CameraCaptureSession(31468): at android.hardware.camera2.impl.CameraCaptureSessionImpl.close(CameraCaptureSessionImpl.java:526)
E/CameraCaptureSession(31468): at android.hardware.camera2.impl.CameraCaptureSessionImpl$2.onDisconnected(CameraCaptureSessionImpl.java:737)
E/CameraCaptureSession(31468): at android.hardware.camera2.impl.CameraDeviceImpl$7.run(CameraDeviceImpl.java:242)
E/CameraCaptureSession(31468): at android.os.Handler.handleCallback(Handler.java:873)
E/CameraCaptureSession(31468): at android.os.Handler.dispatchMessage(Handler.java:99)
E/CameraCaptureSession(31468): at android.os.Looper.loop(Looper.java:214)
E/CameraCaptureSession(31468): at android.app.ActivityThread.main(ActivityThread.java:6981)
E/CameraCaptureSession(31468): at java.lang.reflect.Method.invoke(Native Method)
E/CameraCaptureSession(31468): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
E/CameraCaptureSession(31468): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1445)
E/CameraCaptureSession(31468): Caused by: android.os.ServiceSpecificException: cancelRequest:458: Camera device no longer alive (code 4)
E/CameraCaptureSession(31468): at android.os.Parcel.createException(Parcel.java:1980)
E/CameraCaptureSession(31468): at android.os.Parcel.readException(Parcel.java:1934)
E/CameraCaptureSession(31468): at android.os.Parcel.readException(Parcel.java:1884)
E/CameraCaptureSession(31468): at android.hardware.camera2.ICameraDeviceUser$Stub$Proxy.cancelRequest(ICameraDeviceUser.java:402)
E/CameraCaptureSession(31468): at android.hardware.camera2.impl.ICameraDeviceUserWrapper.cancelRe
Any Ideas, on how to force the camera package to reinitialize?
On resume re initialise Camera
#override
void didChangeAppLifecycleState(AppLifecycleState state) {
if (state == AppLifecycleState.resumed) {
_controller != null
? _initializeControllerFuture = _controller.initialize()
: null; //on pause camera is disposed, so we need to call again "issue is only for android"
}
}
checkout https://medium.com/#navinkumar0118/take-a-picture-using-flutter-camera-a9c11d282632

issue with video_playeur package of flutter

Hello I tried the video_playeur package but have crash when I replay multiple time a video... here is the repport :
I/ExoPlayerImpl(20516): Init c98f76 [ExoPlayerLib/2.9.6] [herolte, SM-G930F, samsung, 26]
V/Surface (20516): sf_framedrop debug : 0x4f4c, game : false, logging : 0
I/ACodec (20516): [] Now uninitialized
I/ACodec (20516): [] onAllocateComponent
I/OMXClient(20516): Treble IOmx obtained
I/ACodec (20516): [OMX.Exynos.avc.dec] Now Loaded
V/Surface (20516): sf_framedrop debug : 0x4f4c, game : false, logging : 0
D/SurfaceUtils(20516): connecting to surface 0x756360d010, reason connectToSurface
I/MediaCodec(20516): [OMX.Exynos.avc.dec] setting surface generation to 21008428
D/SurfaceUtils(20516): disconnecting from surface 0x756360d010, reason connectToSurface(reconnect)
D/SurfaceUtils(20516): connecting to surface 0x756360d010, reason connectToSurface(reconnect)
I/MediaCodec(20516): failed to configure codec bacause of codec capacity
E/MediaCodec(20516): Codec reported err 0xffffec77, actionCode 0, while in state 3
D/SurfaceUtils(20516): disconnecting from surface 0x756360d010, reason disconnectFromSurface
E/MediaCodec(20516): configure failed with err 0xffffec77, resetting...
I/ACodec (20516): [OMX.Exynos.avc.dec] Now uninitialized
I/ACodec (20516): [] Now kWhatShutdownCompleted event : 8483
I/MediaCodec(20516): Codec shutdown complete
I/ACodec (20516): [] Now uninitialized
I/ACodec (20516): [] onAllocateComponent
I/OMXClient(20516): Treble IOmx obtained
I/ACodec (20516): [OMX.Exynos.avc.dec] Now Loaded
I/ACodec (20516): [OMX.Exynos.avc.dec] Now uninitialized
I/ACodec (20516): [] Now kWhatShutdownCompleted event : 8483
I/MediaCodec(20516): Codec shutdown complete
W/MediaCodecRenderer(20516): Failed to initialize decoder: OMX.Exynos.avc.dec
W/MediaCodecRenderer(20516): android.media.MediaCodec$CodecException: Error 0xffffec77
W/MediaCodecRenderer(20516): at android.media.MediaCodec.native_configure(Native Method)
W/MediaCodecRenderer(20516): at android.media.MediaCodec.configure(MediaCodec.java:1935)
W/MediaCodecRenderer(20516): at android.media.MediaCodec.configure(MediaCodec.java:1864)
W/MediaCodecRenderer(20516): at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.configureCodec(MediaCodecVideoRenderer.java:483)
W/MediaCodecRenderer(20516): at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.initCodec(MediaCodecRenderer.java:805)
W/MediaCodecRenderer(20516): at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.initCodecWithFallback(MediaCodecRenderer.java:745)
W/MediaCodecRenderer(20516): at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodec(MediaCodecRenderer.java:474)
W/MediaCodecRenderer(20516): at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.reinitializeCodec(MediaCodecRenderer.java:1261)
W/MediaCodecRenderer(20516): at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.onInputFormatChanged(MediaCodecRenderer.java:1111)
W/MediaCodecRenderer(20516): at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.onInputFormatChanged(MediaCodecVideoRenderer.java:552)
W/MediaCodecRenderer(20516): at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:647)
W/MediaCodecRenderer(20516): at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:529)
W/MediaCodecRenderer(20516): at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:300)
W/MediaCodecRenderer(20516): at android.os.Handler.dispatchMessage(Handler.java:101)
W/MediaCodecRenderer(20516): at android.os.Looper.loop(Looper.java:164)
W/MediaCodecRenderer(20516): at android.os.HandlerThread.run(HandlerThread.java:65)
E/ExoPlayerImplInternal(20516): Playback error.
E/ExoPlayerImplInternal(20516): com.google.android.exoplayer2.ExoPlaybackException: com.google.android.exoplayer2.mediacodec.MediaCodecRenderer$DecoderInitializationException: Decoder init failed: OMX.Exynos.avc.dec, Format(1, null, null, video/avc, null, -1, null, [1440, 1080, -1.0], [-1, -1])
E/ExoPlayerImplInternal(20516): at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodec(MediaCodecRenderer.java:479)
E/ExoPlayerImplInternal(20516): at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.reinitializeCodec(MediaCodecRenderer.java:1261)
E/ExoPlayerImplInternal(20516): at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.onInputFormatChanged(MediaCodecRenderer.java:1111)
E/ExoPlayerImplInternal(20516): at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.onInputFormatChanged(MediaCodecVideoRenderer.java:552)
E/ExoPlayerImplInternal(20516): at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:647)
E/ExoPlayerImplInternal(20516): at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:529)
E/ExoPlayerImplInternal(20516): at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:300)
E/ExoPlayerImplInternal(20516): at android.os.Handler.dispatchMessage(Handler.java:101)
E/ExoPlayerImplInternal(20516): at android.os.Looper.loop(Looper.java:164)
E/ExoPlayerImplInternal(20516): at android.os.HandlerThread.run(HandlerThread.java:65)
E/ExoPlayerImplInternal(20516): Caused by: com.google.android.exoplayer2.mediacodec.MediaCodecRenderer$DecoderInitializationException: Decoder init failed: OMX.Exynos.avc.dec, Format(1, null, null, video/avc, null, -1, null, [1440, 1080, -1.0], [-1, -1])
E/ExoPlayerImplInternal(20516): at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.initCodecWithFallback(MediaCodecRenderer.java:753)
E/ExoPlayerImplInternal(20516): at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodec(MediaCodecRenderer.java:474)
E/ExoPlayerImplInternal(20516): ... 9 more
E/ExoPlayerImplInternal(20516): Caused by: android.media.MediaCodec$CodecException: Error 0xffffec77
E/ExoPlayerImplInternal(20516): at android.media.MediaCodec.native_configure(Native Method)
E/ExoPlayerImplInternal(20516): at android.media.MediaCodec.configure(MediaCodec.java:1935)
E/ExoPlayerImplInternal(20516): at android.media.MediaCodec.configure(MediaCodec.java:1864)
E/ExoPlayerImplInternal(20516): at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.configureCodec(MediaCodecVideoRenderer.java:483)
E/ExoPlayerImplInternal(20516): at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.initCodec(MediaCodecRenderer.java:805)
E/ExoPlayerImplInternal(20516): at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.initCodecWithFallback(MediaCodecRenderer.java:745)
E/ExoPlayerImplInternal(20516): ... 10 more
my function
Future<String> create_video() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setString('daysfromnow_modify',daysfromnow_modify)??"";
final Directory extDir = await getApplicationDocumentsDirectory();
_controller = VideoPlayerController.network(
'file:${extDir.path}/Movies/$daysfromnow_modify.mp4'
)
..initialize().then((_) {
setState(() {
if( _controller!=null){
_changed(true, "video_chargement"); //display video
}else{
_changed(false, "video_chargement"); // hide video
}
});
});
}
All is good but after 5 replays or 8, or 10, it's random I have crash
I use the example and only add _controller.initialize(); to replay video without it, I can't replay finished video. But when controller.initialize(); is call multiple time I have crash...
The issue here is that the same VideoPlayerController is being reinitialized multiple times without being disposed. If the same controller is going to be used again, the controller can be reused again as mentioned GitHub issue thread.

android.media.MediaCodec$CodecException: Failed to initialize OMX.qcom.video.decoder.avc, error 0xfffffff4

On Device Lenovo K33a42, Getting below given error, screen is black and not playing the video
com.google.android.exoplayer2.ExoPlaybackException: com.google.android.exoplayer2.mediacodec.MediaCodecRenderer$DecoderInitializationException: Decoder init failed: OMX.qcom.video.decoder.avc, Format(1, null, null, video/avc, null, -1, null, [480, 360, -1.0], [-1, -1])
at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodec(MediaCodecRenderer.java:479)
at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.reinitializeCodec(MediaCodecRenderer.java:1261)
at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.onInputFormatChanged(MediaCodecRenderer.java:1111)
at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.onInputFormatChanged(MediaCodecVideoRenderer.java:552)
at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:647)
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:98)
at android.os.Looper.loop(Looper.java:154)
at android.os.HandlerThread.run(HandlerThread.java:61)
Caused by: com.google.android.exoplayer2.mediacodec.MediaCodecRenderer$DecoderInitializationException: Decoder init failed: OMX.qcom.video.decoder.avc, Format(1, null, null, video/avc, null, -1, null, [480, 360, -1.0], [-1, -1])
at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.initCodecWithFallback(MediaCodecRenderer.java:753)
at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodec(MediaCodecRenderer.java:474)
at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.reinitializeCodec(MediaCodecRenderer.java:1261) 
at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.onInputFormatChanged(MediaCodecRenderer.java:1111) 
at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.onInputFormatChanged(MediaCodecVideoRenderer.java:552) 
at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:647) 
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:98) 
at android.os.Looper.loop(Looper.java:154) 
at android.os.HandlerThread.run(HandlerThread.java:61) 
Caused by: android.media.MediaCodec$CodecException: Failed to initialize OMX.qcom.video.decoder.avc, error 0xfffffff4
at android.media.MediaCodec.native_setup(Native Method)
at android.media.MediaCodec.(MediaCodec.java:1774)
at android.media.MediaCodec.createByCodecName(MediaCodec.java:1755)
at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.initCodec(MediaCodecRenderer.java:802)
at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.initCodecWithFallback(MediaCodecRenderer.java:745)
at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodec(MediaCodecRenderer.java:474) 
at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.reinitializeCodec(MediaCodecRenderer.java:1261) 
at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.onInputFormatChanged(MediaCodecRenderer.java:1111) 
at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.onInputFormatChanged(MediaCodecVideoRenderer.java:552) 
at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:647) 
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:98) 
at android.os.Looper.loop(Looper.java:154) 
at android.os.HandlerThread.run(HandlerThread.java:61)