Exoplayer不播放任何视频

时间:2017-01-12 21:12:42

标签: android exoplayer

让Exoplayer工作时遇到问题。我设法从网址加载视频。但它只播放音频。所以我做错了。

    BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
    TrackSelection.Factory videoTrackSelectionFactory = new AdaptiveVideoTrackSelection.Factory(bandwidthMeter);
    TrackSelector trackSelector = new DefaultTrackSelector(videoTrackSelectionFactory);
    LoadControl loadControl = new DefaultLoadControl();
    SimpleExoPlayer exoPlayer = ExoPlayerFactory.newSimpleInstance(simpleExoPlayerView.getContext(), trackSelector, loadControl);

    Uri mp4VideoUri = Uri.parse(videoUri);
    DefaultHttpDataSourceFactory dataSourceFactory = new DefaultHttpDataSourceFactory("ExoPlayerDemo");
    ExtractorsFactory extractor = new DefaultExtractorsFactory();

    MediaSource videoSource = new ExtractorMediaSource(mp4VideoUri, dataSourceFactory, extractor, null, null);
    exoPlayer.prepare(videoSource);

    exoPlayer.setPlayWhenReady(true);

这就是我只能播放音频的方式。不确定我应该改变什么。

1 个答案:

答案 0 :(得分:3)

看起来你错过了将玩家绑定到玩家视图

  

Attaching player to view

     

ExoPlayer库提供了一个SimpleExoPlayerView,它封装了一个PlaybackControlView和一个呈现视频的Surface。 SimpleExoPlayerView可以包含在应用程序的布局xml中。将播放器绑定到视图非常简单:

// Bind the player to the view.
simpleExoPlayerView.setPlayer(player);
  

如果您需要对播放器控件和渲染视频的Surface进行细粒度控制,则可以分别使用SimpleExoPlayer的setVideoSurfaceView,setVideoTextureView,setVideoSurfaceHolder和setVideoSurface方法直接设置播放器的目标SurfaceView,TextureView,SurfaceHolder或Surface。您可以将PlaybackControlView用作独立组件,或实现您自己的与播放器直接交互的播放控件。 setTextOutput和setId3Output可用于在播放期间接收字幕和ID3元数据输出。