最近我遇到了 google exoplayer,它有一些很酷的功能,但缺乏文档和支持,而且我对它很陌生,我的疑问是如何使用服务器 URL 播放 mp4 视频。现在让我解释一下到目前为止我所尝试的内容
- 我已经在我的项目中成功实现了 exoplayer 并使其正常工作
但我的问题是首先使用我的服务器 URL,它会完成完整的视频缓冲区,然后才开始播放,所以需要时间?我需要的是在收到每个响应后需要同时播放,以便视频可以快速播放,我怎样才能实现这一点。现在让我发布到目前为止我尝试过的内容:
BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter(); TrackSelection.Factory videoTrackSelectionFactory = new AdaptiveTrackSelection.Factory(bandwidthMeter); TrackSelector trackSelector = new DefaultTrackSelector(videoTrackSelectionFactory); LoadControl loadControl = new DefaultLoadControl(); player = ExoPlayerFactory.newSimpleInstance(this, trackSelector, loadControl); simpleExoPlayerView = new SimpleExoPlayerView(this); simpleExoPlayerView = findViewById(R.id.player_view); simpleExoPlayerView.setUseController(true); simpleExoPlayerView.setVisibility(View.VISIBLE); simpleExoPlayerView.requestFocus(); simpleExoPlayerView.setPlayer(player); Log.d("url", intent.getStringExtra("videopath") + "?api_key=" + getResources().getString(R.string.dream_factory_api_key) + "&session_token=" + PreferenceUtils.getInstance(this).getStrData(PreferenceUtils.SESSION_TOKEN)); MediaSource mediaSource = new ExtractorMediaSource(Uri.parse(intent.getStringExtra("videopath") + "?api_key=" + getResources().getString(R.string.fs) + "&session_token=" + PreferenceUtils.getInstance(this).getStrData(PreferenceUtils.SESSION_TOKEN)), new CacheDataSourceFactory(this, 100 * 1024 * 1024, 5 * 1024 * 1024), new DefaultExtractorsFactory(), null, null); player.prepare(mediaSource);
有什么帮助吗?我这样做的方式正确吗?我需要的是它需要像 youtube 播放一样的缓冲区,而不是完全像缓冲区一样的缓冲区然后播放,提前致谢
最佳答案
您可能应该使用 DashMediaSource,而不是 ExtractorMediaSource。这正是您想要的(播放时缓冲)。
关于android - 如何使用 ExoPlayer 从服务器流式传输 mp4 视频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47546088/