31/10/2018, 20:18
Tạo trình xem stream với ExoPlayer
ExoPlayer là 1 thư viện khá nổi tiếng do Google tạo ra. ExoPlayer giúp load các thể loại video, đặc biệt hơn nữa là nó có thể load được video stream. Nó được Google sử dụng trong các ứng dụng nổi tiếng như YouTube và Google Play Phim. Các bạn có thể tìm hiểu rõ hơn tại đây Bài này mình sẽ ...
- ExoPlayer là 1 thư viện khá nổi tiếng do Google tạo ra. ExoPlayer giúp load các thể loại video, đặc biệt hơn nữa là nó có thể load được video stream. Nó được Google sử dụng trong các ứng dụng nổi tiếng như YouTube và Google Play Phim.
- Các bạn có thể tìm hiểu rõ hơn tại đây
- Bài này mình sẽ hướng dẫn các bạn sử dụng ExoPlayer để load 1 url stream
- Khai báo trong file gradle(app)
dependencies { ... implementation 'com.google.android.exoplayer:exoplayer-core:2.7.3' implementation 'com.google.android.exoplayer:exoplayer-dash:2.7.3' implementation 'com.google.android.exoplayer:exoplayer-ui:2.7.3' }
- Trong file layout xml, bạn tạo 1 PlayerView
... <com.google.android.exoplayer2.ui.PlayerView android:id="@+id/video_view" android:layout_awidth="match_parent" android:layout_height="match_parent"/>
- Ở Activity chúng ta cấu hình cho ExoPlayer như sau:
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // Tạo 1 mediaDataSource để chuẩn bị load video mediaDataSourceFactory = DefaultDataSourceFactory(this, Util.getUserAgent(this, "mediaPlayerSample"), bandawidthMeter as TransferListener<in DataSource> ) }
- Tạo 1 function riêng để cấu hình ExoPlayer
private fun initializePlayer() { playerView.requestFocus() val videoTrackSelectionFactory = AdaptiveTrackSelection.Factory(bandawidthMeter) trackSelector = DefaultTrackSelector(videoTrackSelectionFactory) lastSeenTrackGroupArray = null player = ExoPlayerFactory.newSimpleInstance(this,trackSelector) playerView.player = player player?.playWhenReady = true val mediaSource: MediaSource = HlsMediaSource.Factory(mediaDataSourceFactory) .createMediaSource( Uri.parse("http://4co2.vp9.tv/chn/DNG8/v.m3u8")) player?.prepare(mediaSource) }
- Overide lại lifecycle để thêm hàm mình vừa tạo ở trên
public override fun onStart() { super.onStart() if (Util.SDK_INT > 23) initializePlayer() } public override fun onResume() { super.onResume() if (Util.SDK_INT <= 23 || player == null) initializePlayer() } public override fun onPause() { super.onPause() if (Util.SDK_INT <= 23) releasePlayer() } public override fun onStop() { super.onStop() if (Util.SDK_INT > 23) releasePlayer() }
- Kết quả:
- Cảm ơn các bạn đã đọc bài viế t của mình
- Nguồn tại đây