Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Exoplayer seekbar预览_Android_Exoplayer2.x - Fatal编程技术网

Android Exoplayer seekbar预览

Android Exoplayer seekbar预览,android,exoplayer2.x,Android,Exoplayer2.x,我正试图在我的exoplayer上为我的seekbar添加预览,就像在youtube或plex中一样(见下图) 我找到了这个,但还不是最新的 我已经有了每帧的图像,但我不知道如何将它们集成到我的Exoplayer,我正在寻找教程或说明,因为我有点迷路了 我在浏览exoplayer文档时找到了。我猜我将使用这3个监听器获取磨砂的位置并显示相应的图像。更新:从2020年5月开始更新,因此您可以直接使用它 我将在下面为那些不想使用该库的人留下代码 在根据我的需要进行搜索和调整后,我找到了一种方法,

我正试图在我的exoplayer上为我的seekbar添加预览,就像在youtube或plex中一样(见下图)

我找到了这个,但还不是最新的

我已经有了每帧的图像,但我不知道如何将它们集成到我的
Exoplayer
,我正在寻找教程或说明,因为我有点迷路了

我在浏览exoplayer文档时找到了。我猜我将使用这3个监听器获取磨砂的位置并显示相应的图像。

更新:从2020年5月开始更新,因此您可以直接使用它

我将在下面为那些不想使用该库的人留下代码


在根据我的需要进行搜索和调整后,我找到了一种方法,通过查看我的工作情况,我最终使用了相同的东西,因此如下所示:

我的精灵由10列6行组成,每个方块代表1秒

GlideTransformation

private const val MAX_line=6
private const val MAX_COLUMNS=10
私有const val缩略图\u每个=1000//毫秒
私人常数val一分钟=60000//1分钟(毫秒)
类GlideThumbnailTransformation(位置:Long):BitmapTransformation(){
私有值x:Int
私人val y:Int
初始化{
//位置的剩余部分在一分钟内,因为我们只需要知道当前缩影的哪个正方形
val square=position.rem(一分钟).toInt()/每个缩略图
y=方形/最大列数
x=平方百分比最大列数
}
覆盖有趣的转换(池:位图池,toTransform:Bitmap,outWidth:Int,outHeight:Int):位图{
val width=toTransform.width/MAX_列
val高度=转换高度/最大行数
返回位图.createBitmap(toTransform,x*宽度,y*高度,宽度,高度)
}
重写fun updateDiskCacheKey(messageDigest:messageDigest){
val数据:ByteArray=ByteBuffer.allocate(8).putInt(x).putInt(y).array()
messageDigest.update(数据)
}
重写哈希代码():Int{
return(x.toString()+y.toString()).hashCode()
}
覆盖乐趣等于(其他:任何?):布尔值{
如果(其他!是GlideThumbnailTransformation){
返回错误
}
返回other.x==x&&other.y==y
}
}
活动


val thumbnailUrl=”https://bitdash-a.akamaihd.net/content/MI201109210084_1/thumbnails/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.jpg"
exo_progress.addListener(对象:TimeBar.OnScrubListener{
超越CRUBMOVE(时间条:时间条,位置:长){
previewFrameLayout.visibility=View.VISIBLE
val targetX=updatePreviewX(position.toInt(),exoPlayer.duration.toInt())
previewFrameLayout.x=targetX.toFloat()
GlideApp.with(擦洗预览)
.load(缩略图URL)
.override(Target.SIZE_ORIGINAL,Target.SIZE_ORIGINAL)
.变换(滑动拇指指甲变换(位置))
.diskCacheStrategy(diskCacheStrategy.RESOURCE)
.into(擦洗预览)
}
覆盖crubstop上的乐趣(时间条:时间条,位置:长,取消:布尔){
previewFrameLayout.visibility=View.INVISIBLE
}
重写onScrubStart(时间条:时间条,位置:长){}
})
私人娱乐更新预览(进度:Int,最大:Int):Int{
如果(max==0){返回0}
val parent=previewFrameLayout.parent作为视图组
val layoutParams=previewFrameLayout.layoutParams作为MarginLayoutParams
val offset=progress.toFloat()/max
val minimumX:Int=previewFrameLayout.left
val maximumX=(parent.width-parent.paddingRight-layoutParams.rightMargin)
//我们去掉了擦洗的填充物,如果你有一个自定义的尺寸,只需使用dimen来计算
val previewPaddingRadius:Int=dpToPx(resources.displayMetrics,DefaultTimeBar.DEFAULT\u scriber\u drauged\u SIZE\u DP).div(2)
val previewLeftX=(exo_进度作为视图)。left.toFloat()
val previewRightX=(exo_进度作为视图)。right.toFloat()
val previewSeekBarStartX:Float=previewLeftX+previewPaddingRadius
val previewSeekBarEndX:Float=PreviewWrightX-PreviewAddingRadius
val currentX=(previewSeekBarStartX+(previewSeekBarEndX-previewSeekBarStartX)*偏移量)
val startX:Float=currentX-预览框架布局.width/2f
val endX:Float=startX+previewFrameLayout.width
//钳制动作

返回如果(startX>=minimumX&&endX您能解释一下这个[MOSAIQUE_URL]吗,val thumbnailUrl=“${MOSAIQUE_URL}${position.div(60000)}.jpg”这是一个错误,我将从代码中删除它,
thumbnailUrl
类似于此,这要感谢
.transform(GlideThumbnailTransformation(position))
我不会计算并展示好的框架如何生成缩略图?我不知道如何生成这样的缩略图如何创建这种类型的图像链接(bitdash-a.akamaihd.net/content/MI201109210084_1/thumbnails/…),因为在这幅图像中,您有一些与视频相关的屏幕截图。