让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);
这就是我只能播放音频的方式。不确定我应该改变什么。
答案 0 :(得分:3)
看起来你错过了将玩家绑定到玩家视图
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元数据输出。