gpt4 book ai didi

android - 将 HLS 与 ExoPlayer 一起使用时如何实现 seekTo()

转载 作者:太空狗 更新时间:2023-10-29 14:43:36 26 4
gpt4 key购买 nike

我正在尝试实现一个基本的广播播放器,它可以暂停直播、倒带然后再次快进。

我认为此功能应该从版本 2.1 开始得到原生支持。 ExoPlayer 的。

但是,即使在播放本地内容时可以使用,倒带和快进控件在流式传输时也会显示为灰色。

这是我创建播放器的方式:

private void initExoPlayer(){

Handler mHandler = new Handler();

String userAgent = "userAgent";

Uri uri = Uri.parse(urlSourceOfStream);

dataSourceFactory = new DefaultHttpDataSourceFactory(
userAgent, null,
DefaultHttpDataSource.DEFAULT_CONNECT_TIMEOUT_MILLIS,
1800000,
true);

mediaSource = new ExtractorMediaSource(uri,dataSourceFactory, Mp3Extractor.FACTORY,
mHandler, null);

bandwidthMeter = new DefaultBandwidthMeter();

trackSelectionFactory =
new AdaptiveTrackSelection.Factory(bandwidthMeter);

trackSelector = new DefaultTrackSelector(trackSelectionFactory);

loadControl = new DefaultLoadControl();
exoPlayer = ExoPlayerFactory.newSimpleInstance(this, trackSelector, loadControl);

exoPlayer.prepare(mediaSource);

((SimpleExoPlayerView) findViewById(R.id.exoPlayer)).setPlayer(exoPlayer);

}

播放器可以成功暂停,它似乎正在缓存内容,因为我可以在暂停几分钟后恢复播放器。这也表明应该有一些缓存可以让我倒回内容。

我也尝试过使用 OkHttpDataSourceFactory :

OkHttpClient client = new OkHttpClient.Builder().cache(new Cache(getFilesDir() , 1000)).build();
OkHttpDataSourceFactory okHttpDataSourceFactory = new OkHttpDataSourceFactory(client, userAgent, null);

尝试像这样倒回播放器会使播放器从直播位置播放并且不会倒回内容:

exoPlayer.seekTo(Math.max(exoPlayer.getCurrentPosition() - 1000, 0));

我的问题简而言之:如何使用 ExoPlayer 倒回和快进 HLS?

提前致谢。

最佳答案

看起来有一个错误,https://github.com/google/ExoPlayer/issues/87讨论这个,它已经关闭。但我不确定它是否达到了 v2 版本,而是它可能在开发版本中,here

关于android - 将 HLS 与 ExoPlayer 一起使用时如何实现 seekTo(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43706247/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com