直播源码APP,基于google ExoPlayer 简单自定义播放界面
2021/7/8 14:45:48
本文主要是介绍直播源码APP,基于google ExoPlayer 简单自定义播放界面,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
直播源码APP,基于google ExoPlayer 简单自定义播放界面实现的相关代码
1.直播源码AP基于google ExoPlayer播放m3u8,mp4等文件
简单自定义播放界面,新建一个Layout 布局文件命名为exo_playback_control_view,控件的id不能随便起, 要与exoPlayer原来PlaybackControlView的布局控件id,名称一致, 布局名称不一定是exo_playback_control_view,不过需要在SimpleExoPlayerView控件中添加一个: app:controller_layout_id="@layout/id" ,指定control的布局;如:
2.如果需要详细的自定义播放界面,需要直播源码AP重写SimpleExoPlayerView,和PlaybackControlView。
3.重要的类
/** * 监听播放状态 */ private final class ComponentListener implements ExoPlayer.EventListener { @Override public void onPlayerStateChanged(boolean playWhenReady, int playbackState) { switch (playbackState) { /** * The player is able to immediately /*play from its current position. The player will be playing if * {@link #getPlayWhenReady()} is true, and paused otherwise. */ case Player.STATE_READY:// showLoading(false); play(playWhenReady); break; /** * The player has finished playing the media. */ case Player.STATE_ENDED: showLoading(false); playDefault(); break; /** * The player does not have any media to play. */ case Player.STATE_IDLE: showLoading(true); break; /** * The player is not able to /*immediately play from its current position. This state typically * occurs when more data needs to be loaded. */ case Player.STATE_BUFFERING: showLoading(true); break; } } @Override public void onRepeatModeChanged(int repeatMode) { // Do nothing. } @Override public void onPositionDiscontinuity() { // Do nothing. } @Override public void onPlaybackParametersChanged(PlaybackParameters playbackParameters) { // Do nothing. } @Override public void onTimelineChanged(Timeline timeline, Object manifest) { // Do nothing. } @Override public void onTracksChanged(TrackGroupArray trackGroups, TrackSelectionArray trackSelections) { // Do nothing. } @Override public void onl oadingChanged(boolean isLoading) { // Do nothing. } @Override public void onPlayerError(ExoPlaybackException error) { // Do nothing. } }
4.重要的方法:
/** * 根据不同的Uri文件,生成不同的MediaSource * * @param uri * @param overrideExtension * @return */ private MediaSource buildMediaSource(Uri uri, String overrideExtension) { int type = Util.inferContentType(!TextUtils.isEmpty(overrideExtension) ? "." + overrideExtension : uri.getLastPathSegment()); switch (type) { case C.TYPE_SS: return new SsMediaSource(uri, buildDataSourceFactory(false), new DefaultSsChunkSource.Factory(mediaDataSourceFactory), null, null); case C.TYPE_DASH: return new DashMediaSource(uri, buildDataSourceFactory(false), new DefaultDashChunkSource.Factory(mediaDataSourceFactory), null, null); case C.TYPE_HLS: return new HlsMediaSource(uri, mediaDataSourceFactory, null, null); case C.TYPE_OTHER: return new ExtractorMediaSource(uri, mediaDataSourceFactory, new DefaultExtractorsFactory(), null, null); default: { throw new IllegalStateException("Unsupported type: " + type); } } }
以上就是直播源码APP,基于google ExoPlayer 简单自定义播放界面实现的相关代码, 更多内容欢迎关注之后的文章
这篇关于直播源码APP,基于google ExoPlayer 简单自定义播放界面的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-012024年每个初学者都应该知道的Django十大技巧
- 2024-09-30云原生周刊:Argo CD v2.13 发布候选版本丨2024.9.30
- 2024-09-29哪个更快:OpenAI Whisper、Google TTS 还是 Piper TTS??
- 2024-09-29MLOps 端到端系统在 Google 云平台(I):赋能预测解决方案
- 2024-09-26通过 gcloud CLI 认证从本地脚本写入 Google Sheets
- 2024-09-24GoLand 新建项目 Enable vendoring support automatically 的作用是什么?-icode9专业技术文章分享
- 2024-09-21MongoDB资料:新手入门与初级应用指南
- 2024-09-20MongoDB教程:初学者必备指南
- 2024-09-05MongoDB入门:快速掌握NoSQL数据库基础
- 2024-08-28go 项目中怎么打印调试-icode9专业技术文章分享