当前位置: 首页 > 知识库问答 >
问题:

如何在ExoPlayer中使用HLS时实现SekTo()

越涵衍
2023-03-14

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

我认为ExoPlayer的2.1版本机应该支持这个功能。

然而,回放和快进控件在流媒体播放时会变灰,即使它们在播放本地内容时有效。

以下是我如何创建玩家:

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?

提前谢谢。

共有1个答案

姬念
2023-03-14

看起来好像有个虫子,https://github.com/google/ExoPlayer/issues/87讨论这件事,它已经关闭了。但我不确定它是否达到了v2版本,更确切地说,它可能在这里的开发版本中

 类似资料:
  • 我试图通过扩展SurfaceView并将ExoPlayer视频渲染到其表面来创建一个非常简单的视图。我想支持HLS,而且只支持HLS。我似乎一直都能听到音频,但我从来没有看到视频被渲染到屏幕上。我很好奇我可能做错了什么。 我在日志中看到的唯一错误是: 下面是我的代码。

  • 我正在尝试实现exoplayer这是我的版本 我正在创建一个音乐播放器应用程序,我不知道关于exoplayer的任何信息,我正试图从过去2天开始实现exoplayer,但它不起作用。我无法理解官方文件中的任何内容。 我找到了许多示例和教程,但都是关于使用exoplayer播放视频的。许多示例使用了不推荐使用的方法。 我试图使用本教程实现,但许多方法都不推荐使用,因此无法使用。 谁能建议我从哪里开始

  • 我试图转换一个实时的rtmp流到hls流。 我看了之后有了一些想法 提前谢谢...

  • 我正尝试在iOS应用程序中使用ffmpeg将本地。mp4视频转换为HLS。我已经使用pods集成了ffmpeg包装器,并生成了所有分段的。ts文件和m3u8文件,但是一些。ts文件段没有在。m3u8播放列表文件中列出,如下所示。它总是列出最后5个视频片段。 我使用以下代码生成HLS。 还有其他方法可以做到这一点吗?

  • 这是我的m3u8,内置字幕: 我使用加载我的hls视频。我的m3u8文件怎么了?

  • 我想在我的应用程序中播放Widevine Modular-DASH视频,我想使用或。 是否有任何示例如何设置它?或者您可以提供任何示例代码如何获取许可证?我有视频的URL和Widevine服务器URL。 在我们使用Widevine经典之前,许可证请求如下所示: 然后 之后,视频在VideoView或ExoPlayer上播放。