如何使用ExoPlayer从服务器传输mp4视频?

时间:2017-11-29 06:02:53

标签: android video-streaming exoplayer

最近我遇到了谷歌exoplayer,它有一些很酷的文化和支持,并且是新手,我的疑问是如何使用服务器URL播放mp4视频。现在让我解释一下到目前为止我尝试过的事情

  1. 我已成功在我的项目中实现了exoplayer并使其正常工作
  2. 但我的问题是首先使用我的服务器网址完成完整的视频缓冲,然后才开始播放,这需要时间吗?我需要的是它需要在获得每个响应后同时播放,以便视频可以快速播放,我怎样才能实现这一点。现在让我发布我到目前为止所尝试的内容:

        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);
    
  3. 有任何帮助吗?我是以正确的方式做的吗?我需要的是它需要缓冲区像youtube播放和缓冲区不像缓冲区完全然后播放,谢谢inavan

1 个答案:

答案 0 :(得分:1)

您应该使用DashMediaSource而不是ExtractorMediaSource。那是你想要的(在比赛时缓冲)。