每当我进入活动时,该应用程序就会崩溃

时间:2021-02-10 21:40:27

标签: java android http-live-streaming

代码是

public class TwelfthActivity extends AppCompatActivity {
private Object HlsMediaSource;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_twelfth);

    DataSource.Factory dataSourceFactory = new DefaultHttpDataSourceFactory();
    HlsMediaSource hlsMediaSource =
            new HlsMediaSource.Factory(dataSourceFactory)
            .createMediaSource(MediaItem.fromUri("http://37.77.2.234:1935/beyaz/live/chunklist_w269671748.m3u8"));
    SimpleExoPlayer player = new SimpleExoPlayer.Builder(this).build();
    player.setMediaSource((MediaSource) HlsMediaSource);
    player.prepare();
}

}

任何地方都没有弹出错误,但应用本身只是崩溃

2 个答案:

答案 0 :(得分:0)

private SimpleExoPlayer moviePlayer;
private PlayerView playerView;
private DefaultTrackSelector trackSelector;
private int currentWindow = 0;
private long playbackPosition = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_twelfth);

    playerView = findViewById(R.id.moviePlayer);

    trackSelector = new DefaultTrackSelector(this, new AdaptiveTrackSelection.Factory());  
    trackSelector.setParameters(trackSelector.buildUponParameters().setMaxVideoSizeSd());
    DefaultLoadControl loadControl = new DefaultLoadControl.Builder().setBufferDurationsMs(50000, 50000, 4000, 1024).build();
    moviePlayer = new SimpleExoPlayer.Builder(this, new DefaultRenderersFactory(this)).setLoadControl(loadControl).setTrackSelector(trackSelector).build();
    playerView.setPlayer(moviePlayer);
    
    DataSource.Factory dataSourceFactory = new DefaultHttpDataSourceFactory(getString(R.string.app_name));
    MediaSource mediaSource = new HlsMediaSource.Factory(dataSourceFactory).setAllowChunklessPreparation(true).createMediaSource(new MediaItem.Builder().setUri(Uri.parse("http://37.77.2.234:1935/beyaz/live/chunklist_w269671748.m3u8")).build());

    moviePlayer.setMediaSource(mediaSource);
    moviePlayer.setPlayWhenReady(true);
    moviePlayer.seekTo(currentWindow, playbackPosition);
    moviePlayer.prepare();

}

答案 1 :(得分:-1)

您能否显示 AndroidManifest 文件以及您如何打开此活动?

另外,请尝试添加 https://exoplayer.dev/doc/reference/com/google/android/exoplayer2/SimpleExoPlayer.html#addListener(com.google.android.exoplayer2.Player.EventListener),看看是否有错误。

如果 logcat 中没有关于崩溃的信息,可能会重新启动 android studio