ExoPlayer with flutter is failing to play m3u8 files pulled from firebase storage

Viewed 425

I know this question was asked by several developers but with no concrete solution being found. I'm developing a live streaming app that uses agora rtc to live streaming. Agora allows saving the recording in hls format which recently started supporting firebase storage as a third party cloud.

I'm able to store and retrieve the recorded live streaming, but I'm facing an ExoPlayer error when trying to play the m3u8 link. Here's my code:

  _videoPlayerController = VideoPlayerController.network(
          endedStreamModels[index]!.streamUrl!,
          formatHint: VideoFormat.hls,
        );
        _videoPlayerController.initialize().then((_) {
          setState(() {});
          _videoPlayerController.play();
        });

        _videoPlayerController.addListener(() {
          if (_videoPlayerController.value.hasError) {
            print(
                'Video Error: ${_videoPlayerController.value.errorDescription}');
          }
          if (_videoPlayerController.value.isBuffering) {
            print('Please wait');
          }
          if (_videoPlayerController.value.isInitialized) {
            print('the video is initialized');
          }
        });

and here is the error logged from the the execution of this code:

I/flutter (23866): stream url: https://firebasestorage.googleapis.com/v0/b/rill-app-live.appspot.com/o/streams%2F4aecebd91e4f945b15aab8840f5e417c_toothe.m3u8?
alt=media&token=2ccce5e9-a69d-402b-bafb-fad1834233b1
I/ExoPlayerImpl(23866): Release 47d7d42 [ExoPlayerLib/2.14.2] [starlte, SM-G960F, samsung, 29] [goog.exo.core, goog.exo.hls]
I/ExoPlayerImpl(23866): Release 464f204 [ExoPlayerLib/2.14.2] [starlte, SM-G960F, samsung, 29] [goog.exo.core, goog.exo.hls]
I/ExoPlayerImpl(23866): Release fae08c9 [ExoPlayerLib/2.14.2] [starlte, SM-G960F, samsung, 29] [goog.exo.core, goog.exo.hls]
I/ExoPlayerImpl(23866): Release c8a5c60 [ExoPlayerLib/2.14.2] [starlte, SM-G960F, samsung, 29] [goog.exo.core, goog.exo.hls]
I/ExoPlayerImpl(23866): Init 8d089d1 [ExoPlayerLib/2.14.2] [starlte, SM-G960F, samsung, 29]
10
I/System.out(23866): (HTTPLog)-Static: isSBSettingEnabled false
E/ExoPlayerImplInternal(23866): Playback error
E/ExoPlayerImplInternal(23866):   com.google.android.exoplayer2.ExoPlaybackException: Source error
E/ExoPlayerImplInternal(23866):       at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:580)
E/ExoPlayerImplInternal(23866):       at android.os.Handler.dispatchMessage(Handler.java:103)
E/ExoPlayerImplInternal(23866):       at android.os.Looper.loop(Looper.java:237)
E/ExoPlayerImplInternal(23866):       at android.os.HandlerThread.run(HandlerThread.java:67)
E/ExoPlayerImplInternal(23866):   Caused by: com.google.android.exoplayer2.upstream.HttpDataSource$InvalidResponseCodeException: Response code: 403
E/ExoPlayerImplInternal(23866):       at com.google.android.exoplayer2.upstream.DefaultHttpDataSource.open(DefaultHttpDataSource.java:383)
E/ExoPlayerImplInternal(23866):       at com.google.android.exoplayer2.upstream.StatsDataSource.open(StatsDataSource.java:84)
E/ExoPlayerImplInternal(23866):       at com.google.android.exoplayer2.source.hls.HlsMediaChunk.prepareExtraction(HlsMediaChunk.java:489)
E/ExoPlayerImplInternal(23866):       at com.google.android.exoplayer2.source.hls.HlsMediaChunk.feedDataToExtractor(HlsMediaChunk.java:463)
E/ExoPlayerImplInternal(23866):       at com.google.android.exoplayer2.source.hls.HlsMediaChunk.loadMedia(HlsMediaChunk.java:438)
E/ExoPlayerImplInternal(23866):       at com.google.android.exoplayer2.source.hls.HlsMediaChunk.load(HlsMediaChunk.java:394)
E/ExoPlayerImplInternal(23866):       at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:417)
E/ExoPlayerImplInternal(23866):       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
E/ExoPlayerImplInternal(23866):       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
E/ExoPlayerImplInternal(23866):       at java.lang.Thread.run(Thread.java:919)
I/flutter (23866): Video Error: Video player had error com.google.android.exoplayer2.ExoPlaybackException: Source error
D/Sentry  (23866): onEvent fired for EnvelopeFileObserver with event type 8 on path: /data/user/0/com.oxy.rillliveapp/cache/sentry/outbox for file c3d2c2ea-849d-4c49-9ee1-d267cfa8b80e.

My experience with streaming hls videos is quite limited, so I would appreciate anyone's support in helping me find a solution for this error.

0 Answers
Related