Skip to content

Conversation

@maurovitale
Copy link

About the changes

This PR fixes offline video playback support on Android by updating the upstream data source factory in ExoPlayerController.
Problem: The player was previously using DefaultHttpDataSource.Factory(), which only supports HTTP/HTTPS URLs. This prevented playback of locally cached or downloaded videos using file:// URLs, breaking offline functionality.
Solution: Replace DefaultHttpDataSource.Factory() with DefaultDataSource.Factory(context) which supports multiple protocols including:
HTTP/HTTPS URLs (existing functionality)
Local file:// URLs (new offline support)
Content:// URLs
Asset:// URLs
This change enables the player to handle both online streaming and offline cached/downloaded content seamlessly.

Important files

android/src/main/kotlin/media/bcc/bccm_player/players/exoplayer/ExoPlayerController.kt - Updated upstream data source factory to support local files

Discussion points

This is a critical fix for applications that require offline video playback capabilities. The change is backward compatible and doesn't affect existing HTTP streaming functionality while adding support for local file playback.
Testing: Verify that both HTTP streaming and local file:// playback work correctly after this change.

Copy link
Contributor

@andreasgangso andreasgangso left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for this!

It looks good to me @sifferhans. Here's the source code for DefaultDataSource: https://github.com/androidx/media/blob/release/libraries/datasource/src/main/java/androidx/media3/datasource/DefaultDataSource.java

maybe just verify that offline urls aren't affected since that's the only special data source for bcc media

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants