我正在设计一个 android 视频编辑器应用程序,其中一个功能是修剪从图库中选择的视频。我可以使用显示在 VideoView 底部的 RangeSlider 为用户提供一个选项来选择范围,然后使用 FFMPEG 库来修剪视频。
但我无法在 RangeSlider 上显示所选范围内正在播放的视频的进度。
不确定我是否正确接近,因此请为我提供解决方案来实现这一目标。
我正在设计一个 android 视频编辑器应用程序,其中一个功能是修剪从图库中选择的视频。我可以使用显示在 VideoView 底部的 RangeSlider 为用户提供一个选项来选择范围,然后使用 FFMPEG 库来修剪视频。
但我无法在 RangeSlider 上显示所选范围内正在播放的视频的进度。
不确定我是否正确接近,因此请为我提供解决方案来实现这一目标。
当更改 RangeSlider 的边界时,需要计算视频的 startTime 和 endTime。一旦您能够计算 startTime 和 endTime,您需要创建一个ClippingMediaSource实例。
public ClippingMediaSource(MediaSource mediaSource, long startPositionUs, long endPositionUs)
ClippingMediaSource采用三个参数:
您可以按照以下代码段创建媒体源:
fun getMediaSource(file: String): MediaSource {
return ProgressiveMediaSource.Factory(DefaultDataSourceFactory(context, userAgent))
.createMediaSource(MediaItem.fromUri(Uri.parse(file)))
}
创建MediaSource后,您可以传递您计算的开始和结束时间的值。
注意: startPositionUs 和 endPositionUs 以微秒为单位。
完成后,您可以将此媒体源传递给您的 ExoPlayer,它只会播放视频的选定/修剪部分。