首页 文章

Exoplayer不播放任何视频

提问于
浏览
0

让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 回答

  • 2

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

    附加播放器以查看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可用于在播放期间接收 Headers 和ID3元数据输出 .

相关问题