问题可能是由于使用Exo
Pl
ayer2流式传输HLS视频时未正确设置视频渲染器导致的。以下是一个示例代码,展示了如何正确设置Exo
Pl
ayer2以确保视频和
音频
都能正常播放。
// 创建ExoPlayer实例
SimpleExoPlayer player = ExoPlayerFactory.newSimpleInstance(context);
// 创建默认的TrackSelector
DefaultTrackSelector trackSelector = new DefaultTrackSelector();
player.setTrackSelector(trackSelector);
// 创建默认的LoadControl
LoadControl loadControl = new DefaultLoadControl();
// 创建HlsDataSourceFactory
DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(context,
Util.getUserAgent(context, "YourApplicationName"));
// 创建HlsMediaSource
HlsMediaSource mediaSource = new HlsMediaSource.Factory(dataSourceFactory)
.createMediaSource(Uri.parse("your_hls_video_url"));
// 准备播放器
player.prepare(mediaSource);
// 将播放器与视图关联
player.setVideoTextureView(yourVideoTextureView);
// 开始播放
player.setPlayWhenReady(true);
确保your_hls_video_url
是有效的HLS视频URL,yourVideoTextureView
是用于渲染视频的TextureView实例。
此代码片段将正确设置ExoPlayer2以播放HLS视频,并同时播放视频和音频。如果只有声音没有视频播放,可能是由于设置了错误的视频渲染器或视频渲染器无效导致的。通过使用正确的代码示例,您应该能够解决此问题。