使用exoplayer播放m3u8文件的java
我正在尝试将Exo player嵌入到我的Android应用程序中以播放m3u8文件,但它不起作用
我使用下面的代码启动播放器活动
import 安卓.content.pm.ActivityInfo;
import 安卓.net.Uri;
import 安卓.os.Bundle;
import 安卓.os.Handler;
import 安卓.view.View;
import 安卓.view.Window;
import 安卓.view.WindowManager;
import 安卓.widget.ImageView;
import 安卓.widget.ProgressBar;
import 安卓x.annotation.Nullable;
import 安卓x.appcompat.app.AppCompatActivity;
import com.google.安卓.exoplayer2.DefaultLoadControl;
import com.google.安卓.exoplayer2.ExoPlaybackException;
import com.google.安卓.exoplayer2.ExoPlayerFactory;
import com.google.安卓.exoplayer2.LoadControl;
import com.google.安卓.exoplayer2.PlaybackParameters;
import com.google.安卓.exoplayer2.Player;
import com.google.安卓.exoplayer2.SimpleExoPlayer;
import com.google.安卓.exoplayer2.Timeline;
import com.google.安卓.exoplayer2.source.ExtractorMediaSource;
import com.google.安卓.exoplayer2.source.MediaSource;
import com.google.安卓.exoplayer2.source.TrackGroupArray;
import com.google.安卓.exoplayer2.trackselection.AdaptiveTrackSelection;
import com.google.安卓.exoplayer2.trackselection.DefaultTrackSelector;
import com.google.安卓.exoplayer2.trackselection.TrackSelectionArray;
import com.google.安卓.exoplayer2.trackselection.TrackSelector;
import com.google.安卓.exoplayer2.ui.PlayerView;
import com.google.安卓.exoplayer2.upstream.BandwidthMeter;
import com.google.安卓.exoplayer2.upstream.DataSource;
import com.google.安卓.exoplayer2.upstream.DefaultBandwidthMeter;
import com.google.安卓.exoplayer2.upstream.DefaultDataSourceFactory;
import com.google.安卓.exoplayer2.util.Util;
public class VideoPlayerActivity extends AppCompatActivity {
private PlayerView videoPlayer;
private SimpleExoPlayer simpleExoPlayer;
private static final String FILE_URL = "";
ProgressBar progressBar;
ImageView btFullScreen;
boolean flag = false;
Handler mainHandler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_video_player);
videoPlayer = findViewById(R.id.exo_player);
progressBar = findViewById(R.id.progress_bar);
btFullScreen = videoPlayer.findViewById(R.id.bt_fullscreen);
setUpExoplayer(getIntent().getStringExtra("url"));
simpleExoPlayer.addListener(new Player.EventListener() {
@Override
public void onTimelineChanged(Timeline timeline, @Nullable Object manifest, int reason) {
}
@Override
public void onTracksChanged(TrackGroupArray trackGroups, TrackSelectionArray trackSelections) {
}
@Override
public void onLoadingChanged(boolean isLoading) {
}
@Override
public void onPlayerStateChanged(boolean playWhenReady, int playbackState) {
if (playbackState == Player.STATE_BUFFERING) {
progressBar.setVisibility(View.VISIBLE);
} else if (playbackState == Player.STATE_READY) {
progressBar.setVisibility(View.GONE);
}
}
@Override
public void onRepeatModeChanged(int repeatMode) {
}
@Override
public void onShuffleModeEnabledChanged(boolean shuffleModeEnabled) {
}
@Override
public void onPlayerError(ExoPlaybackException error) {
}
@Override
public void onPositionDiscontinuity(int reason) {
}
@Override
public void onPlaybackParametersChanged(PlaybackParameters playbackParameters) {
}
@Override
public void onSeekProcessed() {
}
});
btFullScreen.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (flag) {
btFullScreen.setImageDrawable(getResources().getDrawable(R.drawable.ic_fullscreen));
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
flag = false;
} else {
btFullScreen.setImageDrawable(getResources().getDrawable(R.drawable.ic_fullscreen_exit));
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
flag = true;
}
}
});
}
private void setUpExoplayer(String url) {
LoadControl loadControl = new DefaultLoadControl();
BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
TrackSelector trackSelector = new DefaultTrackSelector(
new AdaptiveTrackSelection.Factory(bandwidthMeter)
);
simpleExoPlayer = ExoPlayerFactory.newSimpleInstance(this, trackSelector, loadControl);
videoPlayer.setPlayer(simpleExoPlayer);
DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(this, Util.getUserAgent(this, "Livefootballarena"));
MediaSource mediaSource = new ExtractorMediaSource.Factory(dataSourceFactory).createMediaSource(Uri.parse(url));
videoPlayer.setKeepScreenOn(true);
simpleExoPlayer.prepare(mediaSource);
simpleExoPlayer.setPlayWhenReady(true);
}
@Override
protected void onPause() {
super.onPause();
simpleExoPlayer.setPlayWhenReady(true);
simpleExoPlayer.getPlaybackState();
}
@Override
protected void onRestart() {
super.onRestart();
simpleExoPlayer.setPlayWhenReady(true);
simpleExoPlayer.getPlaybackState();
}
}
}
我已经为此挣扎了一段时间,但如果我将hls源更改为mediasource,我可以播放mp4视频
共 (0) 个答案