0

我正在设计一个 android 视频编辑器应用程序,其中一个功能是修剪从图库中选择的视频。我可以使用显示在 VideoView 底部的 RangeSlider 为用户提供一个选项来选择范围,然后使用 FFMPEG 库来修剪视频。

但我无法在 RangeSlider 上显示所选范围内正在播放的视频的进度。

不确定我是否正确接近,因此请为我提供解决方案来实现这一目标。

4

1 回答 1

4

当更改 RangeSlider 的边界时,需要计算视频的 startTime 和 endTime。一旦您能够计算 startTime 和 endTime,您需要创建一个ClippingMediaSource实例。

public ClippingMediaSource(MediaSource mediaSource, long startPositionUs, long endPositionUs)

ClippingMediaSource采用三个参数:

  • 媒体源
  • 开始位置我们
  • endPositionUs

您可以按照以下代码段创建媒体源:

fun getMediaSource(file: String): MediaSource {
        return ProgressiveMediaSource.Factory(DefaultDataSourceFactory(context, userAgent))
            .createMediaSource(MediaItem.fromUri(Uri.parse(file)))
    }

创建MediaSource后,您可以传递您计算的开始和结束时间的值。

注意: startPositionUs 和 endPositionUs 以微秒为单位。

完成后,您可以将此媒体源传递给您的 ExoPlayer,它只会播放视频的选定/修剪部分。

于 2021-12-14T17:52:37.237 回答