Exo模式 嵌套 RecycleView 列表中第一元素有声音,无画面;Ijk模式会闪屏
(!!!!请务必务必按照issue模板,修改 后提交问题!!!!,不按模板提Isuue删除处理)
(ps 首页问题集锦和demo请先了解一下!)
⚠️提问前建议先看看: https://mp.weixin.qq.com/s/HjSdmAsHuvixCH_EWdvk3Q
问题描述:
Exo模式 嵌套 RecycleView 列表中适配器第一元素有声音,无画面;Ijk模式会闪屏
出现问题的视频流
videoUrl: http://vd2.bdstatic.com/mda-ni5b74m8fyfy1u1e/cae_h264/1662451178955538861/mda-ni5b74m8fyfy1u1e.mp4?v_from_s=hkapp-haokan-hbe
好像随便一个视频流都是这样的现象。
问题机型/系统:
真机 乐视pro LeX620 Android6.0
GSY依赖版本
刚开始是: implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-java:v8.3.3-release-jitpack' implementation 'com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer-exo2:v8.3.3-release-jitpack'
发现 #3673 后升级: implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-java:v8.3.4-release-jitpack' implementation 'com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer-exo2:v8.3.4-release-jitpack'
Demo中的复现步骤
RecycleView 嵌套 RecycleView RecycleView 外层适配器:CncatAdapter,LinearLayoutManager RecycleView 内部适配器:继承自ListAdapter,GridLayoutManager
请求数据回来后显示ui,点击每一个Adapter中的第一元素必现
主要代码在自定义Adapter中,贴在下面 问题代码:(如果有) xml:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.xygit.free.geekvideo.view.RoundConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:backgroundColor="@android:color/white"
app:round_radius="@dimen/dp_8">
<androidx.legacy.widget.Space
android:id="@+id/top_space"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_4"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.google.android.material.card.MaterialCardView
android:id="@+id/v_bg"
android:layout_width="match_parent"
android:layout_height="0dp"
android:clickable="true"
android:descendantFocusability="blocksDescendants"
android:visibility="gone"
app:cardCornerRadius="@dimen/dp_8"
app:cardElevation="@dimen/dp_0"
app:cardPreventCornerOverlap="false"
app:cardUseCompatPadding="false"
app:layout_constraintBottom_toTopOf="@+id/bottom_space"
app:layout_constraintTop_toBottomOf="@+id/top_space">
</com.google.android.material.card.MaterialCardView>
<androidx.legacy.widget.Space
android:id="@+id/header_spce"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_8"
app:layout_constraintTop_toBottomOf="@+id/top_space" />
<com.xygit.free.geekvideo.view.RoundFrameLayout
android:id="@+id/rl_header"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingStart="@dimen/dp_16"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/header_spce">
<com.google.android.material.imageview.ShapeableImageView
android:id="@+id/iv_avatar"
android:layout_width="@dimen/dp_48"
android:layout_height="@dimen/dp_48"
android:padding="@dimen/dp_2"
android:scaleType="centerCrop"
app:shapeAppearance="@style/CircleStyle"
app:strokeColor="@color/color_background"
app:strokeWidth="@dimen/dp_2"
tools:src="@mipmap/ic_launcher" />
</com.xygit.free.geekvideo.view.RoundFrameLayout>
<com.google.android.material.textview.MaterialTextView
android:id="@+id/tv_author"
style="@style/MediumTextStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="@dimen/dp_8"
android:textColor="@android:color/black"
app:layout_constrainedWidth="true"
app:layout_constraintBottom_toBottomOf="@+id/rl_header"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/rl_header"
app:layout_constraintTop_toTopOf="@+id/rl_header"
tools:text="皮皮虾" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/tv_title"
style="@style/MediumTextStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="@dimen/dp_16"
android:paddingTop="@dimen/dp_8"
android:paddingEnd="@dimen/dp_16"
android:paddingBottom="@dimen/dp_8"
android:textColor="@android:color/black"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/rl_header"
tools:text="皮皮虾" />
<FrameLayout
android:id="@+id/fl_play"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="@dimen/dp_8"
android:paddingEnd="@dimen/dp_8"
android:tag="img_share_element"
app:layout_constraintTop_toBottomOf="@+id/tv_title"
tools:visibility="visible">
<FrameLayout
android:id="@+id/fl_gif"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_240">
<com.google.android.material.imageview.ShapeableImageView
android:id="@+id/iv_player"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_240"
android:padding="@dimen/dp_2"
android:scaleType="centerCrop"
android:tag="img_share_element"
android:visibility="gone"
tools:src="@mipmap/ic_launcher"
tools:visibility="visible" />
<moe.codeest.enviews.ENPlayView
android:id="@+id/iv_start"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:layout_gravity="center"
android:clickable="true"
android:visibility="visible" />
</FrameLayout>
<com.xygit.free.geekvideo.gsyexo.SampleCoverVideo
android:id="@+id/video_player"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_240"
android:visibility="gone"
tools:visibility="gone" />
</FrameLayout>
<androidx.legacy.widget.Space
android:id="@+id/play_space"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_16"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/fl_play" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/tv_like"
style="@style/MediumTextStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:drawablePadding="@dimen/dp_4"
android:gravity="center_vertical"
android:paddingStart="@dimen/dp_8"
android:paddingTop="@dimen/dp_4"
android:paddingEnd="@dimen/dp_8"
android:paddingBottom="@dimen/dp_4"
android:textColor="@android:color/black"
app:layout_constrainedWidth="true"
app:layout_constraintEnd_toStartOf="@+id/tv_comment"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/play_space"
tools:drawableStartCompat="@drawable/ic_action_like"
tools:text="皮皮虾" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/tv_comment"
style="@style/MediumTextStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:drawablePadding="@dimen/dp_4"
android:gravity="center_vertical"
android:paddingStart="@dimen/dp_8"
android:paddingTop="@dimen/dp_4"
android:paddingEnd="@dimen/dp_8"
android:paddingBottom="@dimen/dp_4"
android:textColor="@android:color/black"
app:layout_constrainedWidth="true"
app:layout_constraintEnd_toStartOf="@+id/tv_play"
app:layout_constraintStart_toEndOf="@+id/tv_like"
app:layout_constraintTop_toBottomOf="@+id/play_space"
tools:drawableStartCompat="@drawable/ic_action_unlike"
tools:text="皮皮虾" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/tv_play"
style="@style/MediumTextStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:drawablePadding="@dimen/dp_4"
android:gravity="center_vertical"
android:paddingStart="@dimen/dp_8"
android:paddingTop="@dimen/dp_4"
android:paddingEnd="@dimen/dp_8"
android:paddingBottom="@dimen/dp_4"
android:textColor="@android:color/black"
app:layout_constrainedWidth="true"
app:layout_constraintEnd_toStartOf="@+id/tv_share"
app:layout_constraintStart_toEndOf="@+id/tv_comment"
app:layout_constraintTop_toBottomOf="@+id/play_space"
tools:drawableStartCompat="@drawable/ic_action_watch"
tools:text="皮皮虾" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/tv_share"
style="@style/MediumTextStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:drawablePadding="@dimen/dp_4"
android:gravity="center_vertical"
android:paddingStart="@dimen/dp_8"
android:paddingTop="@dimen/dp_4"
android:paddingEnd="@dimen/dp_8"
android:paddingBottom="@dimen/dp_4"
android:textColor="@android:color/black"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/tv_play"
app:layout_constraintTop_toBottomOf="@+id/play_space"
tools:drawableStartCompat="@drawable/ic_action_share"
tools:text="皮皮虾" />
<androidx.legacy.widget.Space
android:id="@+id/line_space"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_8"
app:layout_constraintTop_toBottomOf="@+id/tv_share" />
<androidx.legacy.widget.Space
android:id="@+id/bottom_space"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_4"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/line_space" />
</com.xygit.free.geekvideo.view.RoundConstraintLayout>
</FrameLayout>
kotlin:
class ShortVideoAdapter(inflater: LayoutInflater) :
BaseBindingAdapter<ShortVideo, ItemListShortVideoBinding>(inflater, ShortVideoDiffCallback()) {
val TAG = ShortVideoAdapter::class.java.simpleName
private val gsyVideoOption = GSYVideoOptionBuilder()
override fun getItemViewType(position: Int): Int {
return R.layout.item_list_short_video
}
override fun onCreateViewHolder(
parent: ViewGroup,
viewType: Int
): BindingViewHolder<ItemListShortVideoBinding> {
val holder = super.onCreateViewHolder(parent, viewType)
with(holder.binding) {
//videoPlayer.addOnLayoutChangeListener { view, i, i2, i3, i4, i5, i6, i7, i8 ->
// //大于0说明有播放
// if (GSYVideoManager.instance().playPosition >= 0) {
// //当前播放的位置
// val position = GSYVideoManager.instance().playPosition
// //对应的播放列表TAG
// if (GSYVideoManager.instance().playTag == TAG && position == holder.bindingAdapterPosition) {
// //如果滑出去了上面和下面就是否,和今日头条一样
// //是否全屏
// if (!GSYVideoManager.isFullState(getActivityFromContext(inflater.context))) {
// GSYVideoManager.releaseAllVideos()
// }
// }
// }
//}
}
return holder
}
override fun onBindViewHolder(
binding: ItemListShortVideoBinding,
item: ShortVideo,
position: Int
) {
with(binding) {
Glide.with(inflater.context)
.asDrawable()
.load(item.autherCoverUrl)
.into(ivAvatar)
tvAuthor.text = item.autherName
tvTitle.text = item.title.plus(item.videoIntroduction)
gsyVideoOption.setIsTouchWiget(true)
.setLockLand(false)
.setShowFullAnimation(false)
.setNeedLockFull(true)
.setSeekRatio(1f)
.setAutoFullWithSize(true)
.setCacheWithPlay(true)
.setShowDragProgressTextOnSeekBar(true)
.setVideoTitle("")
.setUrl(item.videoUrl)
.setCachePath(File(FileCacheUtils.getExternalVideoCachePath()))
.setVideoAllCallBack(object : GSYSampleCallBack() {
override fun onPrepared(url: String, vararg objects: Any) {
Debuger.printfError("***** onPrepared **** " + objects[0])
Debuger.printfError("***** onPrepared **** " + objects[1])
super.onPrepared(url, *objects)
//开始播放了才能旋转和全屏
//isPlay = true
}
override fun onEnterFullscreen(url: String, vararg objects: Any) {
super.onEnterFullscreen(url, *objects)
Debuger.printfError("***** onEnterFullscreen **** " + objects[0]) //title
Debuger.printfError("***** onEnterFullscreen **** " + objects[1]) //当前全屏player
}
override fun onAutoComplete(url: String, vararg objects: Any) {
super.onAutoComplete(url, *objects)
}
override fun onClickStartError(url: String, vararg objects: Any) {
super.onClickStartError(url, *objects)
}
override fun onQuitFullscreen(url: String, vararg objects: Any) {
super.onQuitFullscreen(url, *objects)
Debuger.printfError("***** onQuitFullscreen **** " + objects[0]) //title
Debuger.printfError("***** onQuitFullscreen **** " + objects[1]) //当前非全屏player
// ------- !!!如果不需要旋转屏幕,可以不调用!!!-------
// 不需要屏幕旋转,还需要设置 setNeedOrientationUtils(false)
}
})
.setGSYVideoProgressListener { progress, secProgress, currentPosition, duration ->
Debuger.printfLog(
" progress $progress secProgress $secProgress currentPosition $currentPosition duration $duration"
)
}
.build(videoPlayer)
videoPlayer.fullscreenButton.setOnClickListener(object : View.OnClickListener {
override fun onClick(v: View) {
//直接横屏
// ------- !!!如果不需要旋转屏幕,可以不调用!!!-------
// 不需要屏幕旋转,还需要设置 setNeedOrientationUtils(false)
//第一个true是否需要隐藏actionbar,第二个true是否需要隐藏statusbar
videoPlayer.startWindowFullscreen(
getActivityFromContext(inflater.context),
true,
true
)
}
})
//videoPlayer.setOnKeyListener { view, i, keyEvent ->
// if (KeyEvent.KEYCODE_BACK == i) {
// if (GSYVideoManager.backFromWindowFull(inflater.context)) {
// return@setOnKeyListener true
// }
// }
// false
//}
ivStart.setOnClickListener {
val drawable = ivPlayer.drawable
if (drawable is Animatable) {
if (drawable.isRunning) {
drawable.stop()
ivStart.pause()
} else {
drawable.start()
ivStart.play()
}
}
}
videoPlayer.startButton.setOnClickListener {
videoPlayer.release()
gsyVideoOption.setUrl(item.videoUrl)
.build(videoPlayer)
MainHandler.handle(300) {
videoPlayer.startPlayLogic()
}
}
if (SafeUtil.containsImageUrl(item.videoUrl)) {
videoPlayer.isVisible = false
flGif.isVisible = true
ivPlayer.isVisible = true
Glide.with(inflater.context)
.asDrawable()
.load(item.videoCoverUrl)
.into(object : ImageViewTarget<Drawable>(ivPlayer) {
override fun setResource(resource: Drawable?) {
if (resource is Animatable) {
ivStart.isVisible = true
resource.stop()
ivStart.pause()
} else {
ivStart.isVisible = false
}
}
})
//videoPlayer.setOnKeyListener(null)
} else {
gsyVideoOption.setUrl(item.videoUrl)
.build(videoPlayer)
val coverUrl = if (item.videoCoverUrl.isNotBlank()) {
item.videoCoverUrl
} else {
item.videoUrl
}
videoPlayer.loadCoverImage(coverUrl, R.drawable.image_error_ic)
videoPlayer.isVisible = true
videoPlayer.titleTextView.visibility = View.GONE
videoPlayer.backButton.visibility = View.GONE
ivPlayer.isVisible = false
flGif.isVisible = false
}
tvLike.drawable_start = R.drawable.ic_action_like
tvLike.text = item.kudos
tvComment.drawable_start = R.drawable.ic_action_unlike
tvComment.text = item.comments
tvPlay.drawable_start = R.drawable.ic_action_watch
tvPlay.text = item.playCount
tvShare.drawable_start = R.drawable.ic_action_share
tvShare.setText(R.string.share_app)
tvShare.setOnClickListener {
val bp = getBitmap(root)
SystemUtil.share(
inflater.context,
tvTitle.text.toString() + " url:" + item.videoUrl,
bp
)
}
}
}
override fun onViewRecycled(holder: BindingViewHolder<ItemListShortVideoBinding>) {
super.onViewRecycled(holder)
with(holder.binding) {
Glide.with(inflater.context).clear(ivAvatar)
if (!videoPlayer.isVisible) {
Glide.with(inflater.context).clear(ivPlayer)
} else {
if (null != videoPlayer.coverImage) {
Glide.with(inflater.context).clear(videoPlayer.coverImage)
}
if (!GSYVideoManager.isFullState(getActivityFromContext(inflater.context))) {
GSYVideoManager.releaseAllVideos()
}
}
}
}
}
问题log(如果有)
2022-09-07 10:28:08.840 16801-16801/com.gsyexo.sample D/libc-netbsd: [getaddrinfo]: mtk hostname=127.0.0.1; servname=(null); netid=0; mark=0
2022-09-07 10:28:08.840 16801-16801/com.gsyexo.sample D/libc-netbsd: getaddrinfo( app_uid:10323
2022-09-07 10:28:08.840 16801-16801/com.gsyexo.sample D/libc-netbsd: getaddrinfo() uid prop:
2022-09-07 10:28:08.840 16801-16801/com.gsyexo.sample D/libc-netbsd: getaddrinfo() getuid():10323
2022-09-07 10:28:08.840 16801-16801/com.gsyexo.sample D/libc-netbsd: [getaddrinfo]: mtk ai_addrlen=0; ai_canonname=(null); ai_flags=4; ai_family=0
2022-09-07 10:28:08.847 16801-16930/com.gsyexo.sample E/HttpProxyCacheDebuger: ****** injectCustomHeaders ****** :0
2022-09-07 10:28:08.848 16801-16930/com.gsyexo.sample D/libc-netbsd: [getaddrinfo]: mtk hostname=127.0.0.1; servname=(null); netid=0; mark=0
2022-09-07 10:28:08.848 16801-16930/com.gsyexo.sample D/libc-netbsd: getaddrinfo( app_uid:10323
2022-09-07 10:28:08.848 16801-16930/com.gsyexo.sample D/libc-netbsd: getaddrinfo() uid prop:
2022-09-07 10:28:08.848 16801-16930/com.gsyexo.sample D/libc-netbsd: getaddrinfo() getuid():10323
2022-09-07 10:28:08.848 16801-16930/com.gsyexo.sample D/libc-netbsd: [getaddrinfo]: mtk ai_addrlen=0; ai_canonname=(null); ai_flags=4; ai_family=0
2022-09-07 10:28:08.848 16801-16930/com.gsyexo.sample D/libc-netbsd: [getaddrinfo]: mtk hostname=127.0.0.1; servname=(null); netid=0; mark=0
2022-09-07 10:28:08.849 16801-16930/com.gsyexo.sample D/libc-netbsd: getaddrinfo( app_uid:10323
2022-09-07 10:28:08.849 16801-16930/com.gsyexo.sample D/libc-netbsd: getaddrinfo() uid prop:
2022-09-07 10:28:08.849 16801-16930/com.gsyexo.sample D/libc-netbsd: getaddrinfo() getuid():10323
2022-09-07 10:28:08.849 16801-16930/com.gsyexo.sample D/libc-netbsd: [getaddrinfo]: mtk ai_addrlen=0; ai_canonname=(null); ai_flags=4; ai_family=0
2022-09-07 10:28:08.854 16801-16931/com.gsyexo.sample I/HttpProxyCacheDebuger: Opened connections: 0
2022-09-07 10:28:08.855 16801-16930/com.gsyexo.sample I/HttpProxyCacheDebuger: Ping response: `ping ok`, pinged? true
2022-09-07 10:28:08.856 16801-16801/com.gsyexo.sample I/HttpProxyCacheDebuger: Proxy cache server started. Is it alive? true
2022-09-07 10:28:08.858 16801-16930/com.gsyexo.sample E/HttpProxyCacheDebuger: ****** injectCustomHeaders ****** :0
2022-09-07 10:28:08.859 16801-16930/com.gsyexo.sample D/libc-netbsd: [getaddrinfo]: mtk hostname=127.0.0.1; servname=(null); netid=0; mark=0
2022-09-07 10:28:08.859 16801-16930/com.gsyexo.sample D/libc-netbsd: getaddrinfo( app_uid:10323
2022-09-07 10:28:08.859 16801-16930/com.gsyexo.sample D/libc-netbsd: getaddrinfo() uid prop:
2022-09-07 10:28:08.859 16801-16930/com.gsyexo.sample D/libc-netbsd: getaddrinfo() getuid():10323
2022-09-07 10:28:08.859 16801-16930/com.gsyexo.sample D/libc-netbsd: [getaddrinfo]: mtk ai_addrlen=0; ai_canonname=(null); ai_flags=4; ai_family=0
2022-09-07 10:28:08.859 16801-16930/com.gsyexo.sample D/libc-netbsd: [getaddrinfo]: mtk hostname=127.0.0.1; servname=(null); netid=0; mark=0
2022-09-07 10:28:08.859 16801-16930/com.gsyexo.sample D/libc-netbsd: getaddrinfo( app_uid:10323
2022-09-07 10:28:08.860 16801-16930/com.gsyexo.sample D/libc-netbsd: getaddrinfo() uid prop:
2022-09-07 10:28:08.860 16801-16930/com.gsyexo.sample D/libc-netbsd: getaddrinfo() getuid():10323
2022-09-07 10:28:08.860 16801-16930/com.gsyexo.sample D/libc-netbsd: [getaddrinfo]: mtk ai_addrlen=0; ai_canonname=(null); ai_flags=4; ai_family=0
2022-09-07 10:28:08.864 16801-16932/com.gsyexo.sample I/HttpProxyCacheDebuger: Opened connections: 0
2022-09-07 10:28:08.864 16801-16930/com.gsyexo.sample I/HttpProxyCacheDebuger: Ping response: `ping ok`, pinged? true
2022-09-07 10:28:08.895 16801-16801/com.gsyexo.sample E/MPlugin: Unsupported class: com.mediatek.common.telephony.IOnlyOwnerSimSupport
2022-09-07 10:28:08.934 16801-16801/com.gsyexo.sample I/ExoPlayerImpl: Init e64b821 [ExoPlayerLib/2.18.1] [le_x6, Le X620, LeMobile, 23]
2022-09-07 10:28:09.006 16801-16801/com.gsyexo.sample D/EventLogger: state [0.08, B]
2022-09-07 10:28:09.021 16801-16935/com.gsyexo.sample D/libc-netbsd: [getaddrinfo]: mtk hostname=127.0.0.1; servname=(null); netid=0; mark=0
2022-09-07 10:28:09.021 16801-16935/com.gsyexo.sample D/libc-netbsd: getaddrinfo( app_uid:10323
2022-09-07 10:28:09.021 16801-16935/com.gsyexo.sample D/libc-netbsd: getaddrinfo() uid prop:
2022-09-07 10:28:09.021 16801-16935/com.gsyexo.sample D/libc-netbsd: getaddrinfo() getuid():10323
2022-09-07 10:28:09.021 16801-16935/com.gsyexo.sample D/libc-netbsd: [getaddrinfo]: mtk ai_addrlen=0; ai_canonname=(null); ai_flags=4; ai_family=0
2022-09-07 10:28:09.021 16801-16935/com.gsyexo.sample D/libc-netbsd: [getaddrinfo]: mtk hostname=127.0.0.1; servname=(null); netid=0; mark=0
2022-09-07 10:28:09.021 16801-16935/com.gsyexo.sample D/libc-netbsd: getaddrinfo( app_uid:10323
2022-09-07 10:28:09.021 16801-16935/com.gsyexo.sample D/libc-netbsd: getaddrinfo() uid prop:
2022-09-07 10:28:09.022 16801-16935/com.gsyexo.sample D/libc-netbsd: getaddrinfo() getuid():10323
2022-09-07 10:28:09.022 16801-16935/com.gsyexo.sample D/libc-netbsd: [getaddrinfo]: mtk ai_addrlen=0; ai_canonname=(null); ai_flags=4; ai_family=0
2022-09-07 10:28:09.040 16801-16937/com.gsyexo.sample E/HttpProxyCacheDebuger: ****** injectCustomHeaders ****** :0
2022-09-07 10:28:09.041 16801-16937/com.gsyexo.sample D/libc-netbsd: [getaddrinfo]: mtk hostname=vd2.bdstatic.com; servname=(null); netid=0; mark=0
2022-09-07 10:28:09.041 16801-16937/com.gsyexo.sample D/libc-netbsd: getaddrinfo( app_uid:10323
2022-09-07 10:28:09.041 16801-16937/com.gsyexo.sample D/libc-netbsd: getaddrinfo() uid prop:
2022-09-07 10:28:09.041 16801-16937/com.gsyexo.sample D/libc-netbsd: getaddrinfo() getuid():10323
2022-09-07 10:28:09.041 16801-16937/com.gsyexo.sample D/libc-netbsd: [getaddrinfo]: mtk ai_addrlen=0; ai_canonname=(null); ai_flags=4; ai_family=0
2022-09-07 10:28:09.041 16801-16937/com.gsyexo.sample D/libc-netbsd: [getaddrinfo]: mtk hostname=vd2.bdstatic.com; servname=(null); netid=0; mark=0
2022-09-07 10:28:09.041 16801-16937/com.gsyexo.sample D/libc-netbsd: getaddrinfo( app_uid:10323
2022-09-07 10:28:09.041 16801-16937/com.gsyexo.sample D/libc-netbsd: getaddrinfo() uid prop:
2022-09-07 10:28:09.042 16801-16937/com.gsyexo.sample D/libc-netbsd: getaddrinfo() getuid():10323
2022-09-07 10:28:09.042 16801-16937/com.gsyexo.sample D/libc-netbsd: [getaddrinfo]: mtk ai_addrlen=0; ai_canonname=(null); ai_flags=1024; ai_family=0
2022-09-07 10:28:09.054 16801-16801/com.gsyexo.sample D/EventLogger: loading [true]
2022-09-07 10:28:09.104 16801-16937/com.gsyexo.sample D/libc-netbsd: getaddrinfo: vd2.bdstatic.com get result from proxy gai_error = 0
2022-09-07 10:28:09.298 16801-16939/com.gsyexo.sample E/HttpProxyCacheDebuger: ****** injectCustomHeaders ****** :0
2022-09-07 10:28:09.298 16801-16939/com.gsyexo.sample D/libc-netbsd: [getaddrinfo]: mtk hostname=vd2.bdstatic.com; servname=(null); netid=0; mark=0
2022-09-07 10:28:09.299 16801-16939/com.gsyexo.sample D/libc-netbsd: getaddrinfo( app_uid:10323
2022-09-07 10:28:09.299 16801-16939/com.gsyexo.sample D/libc-netbsd: getaddrinfo() uid prop:
2022-09-07 10:28:09.299 16801-16939/com.gsyexo.sample D/libc-netbsd: getaddrinfo() getuid():10323
2022-09-07 10:28:09.299 16801-16939/com.gsyexo.sample D/libc-netbsd: [getaddrinfo]: mtk ai_addrlen=0; ai_canonname=(null); ai_flags=4; ai_family=0
2022-09-07 10:28:09.781 16801-16934/com.gsyexo.sample W/AudioCapabilities: Unsupported mime audio/mpeg-L2
2022-09-07 10:28:09.783 16801-16934/com.gsyexo.sample W/AudioCapabilities: Unsupported mime audio/x-adpcm-ms
2022-09-07 10:28:09.785 16801-16934/com.gsyexo.sample W/AudioCapabilities: Unsupported mime audio/x-adpcm-dvi-ima
2022-09-07 10:28:09.798 16801-16934/com.gsyexo.sample W/AudioCapabilities: Unsupported mime audio/dts
2022-09-07 10:28:09.800 16801-16934/com.gsyexo.sample W/AudioCapabilities: Unsupported mime audio/ape
2022-09-07 10:28:09.803 16801-16934/com.gsyexo.sample W/AudioCapabilities: Unsupported mime audio/alac
2022-09-07 10:28:09.807 16801-16934/com.gsyexo.sample W/AudioCapabilities: Unsupported mime audio/ac3
2022-09-07 10:28:09.809 16801-16934/com.gsyexo.sample W/AudioCapabilities: Unsupported mime audio/eac3
2022-09-07 10:28:09.813 16801-16934/com.gsyexo.sample W/AudioCapabilities: Unsupported mime audio/eac3-joc
2022-09-07 10:28:09.817 16801-16934/com.gsyexo.sample W/AudioCapabilities: Unsupported mime audio/x-adpcm-ms
2022-09-07 10:28:09.819 16801-16934/com.gsyexo.sample W/AudioCapabilities: Unsupported mime audio/x-adpcm-dvi-ima
2022-09-07 10:28:09.828 16801-16934/com.gsyexo.sample W/VideoCapabilities: Unrecognized profile/level 32768/2 for video/mp4v-es
2022-09-07 10:28:09.848 16801-16934/com.gsyexo.sample W/VideoCapabilities: Unsupported mime video/x-ms-wmv
2022-09-07 10:28:09.851 16801-16934/com.gsyexo.sample W/VideoCapabilities: Unsupported mime video/divx
2022-09-07 10:28:09.854 16801-16814/com.gsyexo.sample E/StrictMode: 0x00000000 45 00 00 E4 DA FE 40 00 40 06 61 13 7F 00 00 01 E.....@[email protected].....
0x00000010 7F 00 00 01 DF 0D 9C 51 D9 A5 32 0C B3 74 97 0C .......Q..2..t..
0x00000020 80 18 07 FF FE D8 00 00 01 01 08 0A 07 70 E8 F7 .............p..
0x00000030 07 70 E8 F7 47 45 54 20 2F 70 69 6E 67 20 48 54 .p..GET./ping.HT
0x00000040 54 50 2F 31 2E 31 0D 0A 55 73 65 72 2D 41 67 65 TP/1.1..User-Age
0x00000050 6E 74 3A 20 44 61 6C 76 69 6B 2F 32 2E 31 2E 30 nt:.Dalvik/2.1.0
0x00000060 20 28 4C 69 6E 75 78 3B 20 55 3B 20 41 6E 64 72 .(Linux;.U;.Andr
0x00000070 6F 69 64 20 36 2E 30 3B 20 4C 65 20 58 36 32 30 oid.6.0;.Le.X620
0x00000080 20 42 75 69 6C 64 2F 48 45 58 43 4E 46 4E 35 38 .Build/HEXCNFN58
0x00000090 30 31 38 30 39 33 30 31 53 29 0D 0A 48 6F 73 74 01809301S)..Host
0x000000A0 3A 20 31 32 37 2E 30 2E 30 2E 31 3A 34 30 30 31 :.127.0.0.1:4001
0x000000B0 37 0D 0A 43 6F 6E 6E 65 63 74 69 6F 6E 3A 20 4B 7..Connection:.K
0x000000C0 65 65 70 2D 41 6C 69 76 65 0D 0A 41 63 63 65 70 eep-Alive..Accep
0x000000D0 74 2D 45 6E 63 6F 64 69 6E 67 3A 20 67 7A 69 70 t-Encoding:.gzip
0x000000E0 0D 0A 0D 0A ....
java.lang.Throwable: Detected cleartext network traffic from UID 10323 to /127.0.0.1
at android.os.StrictMode.onCleartextNetworkDetected(StrictMode.java:1803)
at android.app.ActivityThread$ApplicationThread.notifyCleartextNetwork(ActivityThread.java:1311)
at android.app.ApplicationThreadNative.onTransact(ApplicationThreadNative.java:703)
at android.os.Binder.execTransact(Binder.java:458)
2022-09-07 10:28:09.855 16801-16814/com.gsyexo.sample E/Parcel: Reading a NULL string not supported here.
2022-09-07 10:28:09.856 16801-16814/com.gsyexo.sample W/Binder: Caught a RuntimeException from the binder stub implementation.
java.lang.SecurityException: Binder invocation to an incorrect interface
at android.os.Parcel.nativeEnforceInterface(Native Method)
at android.os.Parcel.enforceInterface(Parcel.java:469)
at android.app.ApplicationThreadNative.onTransact(ApplicationThreadNative.java:708)
at android.os.Binder.execTransact(Binder.java:458)
2022-09-07 10:28:09.856 16801-16934/com.gsyexo.sample W/VideoCapabilities: Unsupported mime video/divx3
2022-09-07 10:28:09.860 16801-16934/com.gsyexo.sample W/VideoCapabilities: Unsupported mime video/xvid
2022-09-07 10:28:09.864 16801-16934/com.gsyexo.sample W/VideoCapabilities: Unsupported mime video/flv1
2022-09-07 10:28:09.937 16801-16934/com.gsyexo.sample I/VideoCapabilities: Unsupported profile 4 for video/mp4v-es
2022-09-07 10:28:09.988 16801-16941/com.gsyexo.sample E/ACodec: cannot find aac bit rate
2022-09-07 10:28:10.033 16801-16801/com.gsyexo.sample D/EventLogger: state [1.11, R]
2022-09-07 10:28:10.037 16801-16801/com.gsyexo.sample D/EventLogger: state [1.11, true, I]
2022-09-07 10:28:10.122 16801-16826/com.gsyexo.sample I/GLConsumer: [SurfaceTexture-0-16801-1] attachToContext
2022-09-07 10:28:10.163 16801-16947/com.gsyexo.sample D/SurfaceUtils: set up nativeWindow 0x7f41568410 for 640x360, color 0x32315679, rotation 0, usage 0x2933
2022-09-07 10:28:10.170 16801-16947/com.gsyexo.sample I/GraphicBuffer: create GraphicBuffer by ANativeWindowBuffer, handle(0x7f5a361c20) (w:640 h:360 s:640 f:0x32315679 u:0x002933) owner(0)
2022-09-07 10:28:10.176 16801-16947/com.gsyexo.sample I/GraphicBuffer: create GraphicBuffer by ANativeWindowBuffer, handle(0x7f5a361e00) (w:640 h:360 s:640 f:0x32315679 u:0x002933) owner(0)
2022-09-07 10:28:10.182 16801-16947/com.gsyexo.sample I/GraphicBuffer: create GraphicBuffer by ANativeWindowBuffer, handle(0x7f8006b800) (w:640 h:360 s:640 f:0x32315679 u:0x002933) owner(0)
2022-09-07 10:28:10.237 16801-16947/com.gsyexo.sample D/SurfaceUtils: set up nativeWindow 0x7f41568410 for 640x360, color 0x32315679, rotation 0, usage 0x2933
2022-09-07 10:28:10.253 16801-16947/com.gsyexo.sample I/GraphicBuffer: create GraphicBuffer by ANativeWindowBuffer, handle(0x7f5a361e00) (w:640 h:360 s:640 f:0x32315679 u:0x002933) owner(0)
2022-09-07 10:28:10.258 16801-16947/com.gsyexo.sample I/GraphicBuffer: create GraphicBuffer by ANativeWindowBuffer, handle(0x7f5a361c20) (w:640 h:360 s:640 f:0x32315679 u:0x002933) owner(0)
2022-09-07 10:28:10.263 16801-16947/com.gsyexo.sample I/GraphicBuffer: create GraphicBuffer by ANativeWindowBuffer, handle(0x7f5a3623a0) (w:640 h:360 s:640 f:0x32315679 u:0x002933) owner(0)
2022-09-07 10:28:10.269 16801-16947/com.gsyexo.sample I/GraphicBuffer: create GraphicBuffer by ANativeWindowBuffer, handle(0x7f5a363160) (w:640 h:360 s:640 f:0x32315679 u:0x002933) owner(0)
2022-09-07 10:28:10.274 16801-16947/com.gsyexo.sample I/GraphicBuffer: create GraphicBuffer by ANativeWindowBuffer, handle(0x7f5a363b60) (w:640 h:360 s:640 f:0x32315679 u:0x002933) owner(0)
2022-09-07 10:28:10.280 16801-16947/com.gsyexo.sample I/GraphicBuffer: create GraphicBuffer by ANativeWindowBuffer, handle(0x7f5a363c00) (w:640 h:360 s:640 f:0x32315679 u:0x002933) owner(0)
2022-09-07 10:28:10.285 16801-16947/com.gsyexo.sample I/GraphicBuffer: create GraphicBuffer by ANativeWindowBuffer, handle(0x7f5a363ca0) (w:640 h:360 s:640 f:0x32315679 u:0x002933) owner(0)
2022-09-07 10:28:10.291 16801-16947/com.gsyexo.sample I/GraphicBuffer: create GraphicBuffer by ANativeWindowBuffer, handle(0x7f5a363d40) (w:640 h:360 s:640 f:0x32315679 u:0x002933) owner(0)
2022-09-07 10:28:10.297 16801-16947/com.gsyexo.sample I/GraphicBuffer: create GraphicBuffer by ANativeWindowBuffer, handle(0x7f5a363de0) (w:640 h:360 s:640 f:0x32315679 u:0x002933) owner(0)
2022-09-07 10:28:10.302 16801-16947/com.gsyexo.sample I/GraphicBuffer: create GraphicBuffer by ANativeWindowBuffer, handle(0x7f5a363e80) (w:640 h:360 s:640 f:0x32315679 u:0x002933) owner(0)
2022-09-07 10:28:10.308 16801-16947/com.gsyexo.sample I/GraphicBuffer: create GraphicBuffer by ANativeWindowBuffer, handle(0x7f5a363f20) (w:640 h:360 s:640 f:0x32315679 u:0x002933) owner(0)
2022-09-07 10:28:10.354 16801-16801/com.gsyexo.sample D/EventLogger: videoSizeChanged [640, 360]
2022-09-07 10:28:10.356 16801-16947/com.gsyexo.sample I/GraphicBuffer: create GraphicBuffer by ANativeWindowBuffer, handle(0x7f5a363fc0) (w:640 h:360 s:640 f:0x32315679 u:0x002933) owner(0)
2022-09-07 10:28:10.371 16801-16826/com.gsyexo.sample I/GLConsumer: [SurfaceTexture-0-16801-1] detachFromContext
2022-09-07 10:28:10.520 16801-16958/com.gsyexo.sample D/SurfaceUtils: set up nativeWindow 0x7f41568410 for 640x360, color 0x32315679, rotation 0, usage 0x2933
2022-09-07 10:28:10.529 16801-16958/com.gsyexo.sample I/GraphicBuffer: create GraphicBuffer by ANativeWindowBuffer, handle(0x7f5a361c20) (w:640 h:360 s:640 f:0x32315679 u:0x002933) owner(0)
2022-09-07 10:28:10.536 16801-16958/com.gsyexo.sample I/GraphicBuffer: create GraphicBuffer by ANativeWindowBuffer, handle(0x7f5a361e00) (w:640 h:360 s:640 f:0x32315679 u:0x002933) owner(0)
2022-09-07 10:28:10.544 16801-16958/com.gsyexo.sample I/GraphicBuffer: create GraphicBuffer by ANativeWindowBuffer, handle(0x7f5a3623a0) (w:640 h:360 s:640 f:0x32315679 u:0x002933) owner(0)
2022-09-07 10:28:10.712 16801-16968/com.gsyexo.sample D/SurfaceUtils: set up nativeWindow 0x7f41568410 for 640x360, color 0x32315679, rotation 0, usage 0x2933
2022-09-07 10:28:10.719 16801-16968/com.gsyexo.sample I/GraphicBuffer: create GraphicBuffer by ANativeWindowBuffer, handle(0x7f5a361c20) (w:640 h:360 s:640 f:0x32315679 u:0x002933) owner(0)
2022-09-07 10:28:10.725 16801-16968/com.gsyexo.sample I/GraphicBuffer: create GraphicBuffer by ANativeWindowBuffer, handle(0x7f5a361e00) (w:640 h:360 s:640 f:0x32315679 u:0x002933) owner(0)
2022-09-07 10:28:10.731 16801-16968/com.gsyexo.sample I/GraphicBuffer: create GraphicBuffer by ANativeWindowBuffer, handle(0x7f5a3623a0) (w:640 h:360 s:640 f:0x32315679 u:0x002933) owner(0)
2022-09-07 10:28:10.743 16801-16826/com.gsyexo.sample I/GLConsumer: [SurfaceTexture-0-16801-2] attachToContext
2022-09-07 10:28:10.801 16801-16968/com.gsyexo.sample D/SurfaceUtils: set up nativeWindow 0x7f41568410 for 640x360, color 0x32315679, rotation 0, usage 0x2933
2022-09-07 10:28:10.822 16801-16968/com.gsyexo.sample I/GraphicBuffer: create GraphicBuffer by ANativeWindowBuffer, handle(0x7f5a361e00) (w:640 h:360 s:640 f:0x32315679 u:0x002933) owner(0)
2022-09-07 10:28:10.827 16801-16968/com.gsyexo.sample I/GraphicBuffer: create GraphicBuffer by ANativeWindowBuffer, handle(0x7f5a361c20) (w:640 h:360 s:640 f:0x32315679 u:0x002933) owner(0)
2022-09-07 10:28:10.836 16801-16968/com.gsyexo.sample I/GraphicBuffer: create GraphicBuffer by ANativeWindowBuffer, handle(0x7f5a363200) (w:640 h:360 s:640 f:0x32315679 u:0x002933) owner(0)
2022-09-07 10:28:10.842 16801-16968/com.gsyexo.sample I/GraphicBuffer: create GraphicBuffer by ANativeWindowBuffer, handle(0x7f5a363f20) (w:640 h:360 s:640 f:0x32315679 u:0x002933) owner(0)
2022-09-07 10:28:10.847 16801-16968/com.gsyexo.sample I/GraphicBuffer: create GraphicBuffer by ANativeWindowBuffer, handle(0x7f5a363fc0) (w:640 h:360 s:640 f:0x32315679 u:0x002933) owner(0)
2022-09-07 10:28:10.853 16801-16968/com.gsyexo.sample I/GraphicBuffer: create GraphicBuffer by ANativeWindowBuffer, handle(0x7f5a364060) (w:640 h:360 s:640 f:0x32315679 u:0x002933) owner(0)
2022-09-07 10:28:10.859 16801-16968/com.gsyexo.sample I/GraphicBuffer: create GraphicBuffer by ANativeWindowBuffer, handle(0x7f5a364100) (w:640 h:360 s:640 f:0x32315679 u:0x002933) owner(0)
2022-09-07 10:28:10.864 16801-16968/com.gsyexo.sample I/GraphicBuffer: create GraphicBuffer by ANativeWindowBuffer, handle(0x7f5a3641a0) (w:640 h:360 s:640 f:0x32315679 u:0x002933) owner(0)
2022-09-07 10:28:10.870 16801-16968/com.gsyexo.sample I/GraphicBuffer: create GraphicBuffer by ANativeWindowBuffer, handle(0x7f5a364240) (w:640 h:360 s:640 f:0x32315679 u:0x002933) owner(0)
2022-09-07 10:28:10.871 16801-16801/com.gsyexo.sample D/EventLogger: videoSizeChanged [640, 360]
2022-09-07 10:28:10.874 16801-16801/com.gsyexo.sample D/EventLogger: videoSizeChanged [640, 360]
2022-09-07 10:28:10.875 16801-16968/com.gsyexo.sample I/GraphicBuffer: create GraphicBuffer by ANativeWindowBuffer, handle(0x7f5a3642e0) (w:640 h:360 s:640 f:0x32315679 u:0x002933) owner(0)
2022-09-07 10:28:10.881 16801-16968/com.gsyexo.sample I/GraphicBuffer: create GraphicBuffer by ANativeWindowBuffer, handle(0x7f5a364380) (w:640 h:360 s:640 f:0x32315679 u:0x002933) owner(0)
2022-09-07 10:28:10.906 16801-16826/com.gsyexo.sample I/GLConsumer: [SurfaceTexture-0-16801-2] detachFromContext
2022-09-07 10:28:11.048 16801-16978/com.gsyexo.sample D/SurfaceUtils: set up nativeWindow 0x7f41568410 for 640x360, color 0x32315679, rotation 0, usage 0x2933
没有复现,单纯ry 嵌套 ry
没有复现,单纯ry 嵌套 ry
主页面布局: <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent">
<com.scwang.smart.refresh.layout.SmartRefreshLayout
android:id="@+id/refresh_detail"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:visibility="visible">
<com.scwang.smart.refresh.header.ClassicsHeader
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_detail"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:overScrollMode="never"
android:scrollbars="none" />
</androidx.constraintlayout.widget.ConstraintLayout>
<com.scwang.smart.refresh.footer.ClassicsFooter
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:visibility="visible" />
</com.scwang.smart.refresh.layout.SmartRefreshLayout>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fbt_top"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_16"
android:layout_marginBottom="@dimen/dp_56"
android:clickable="true"
android:rotation="-90"
android:src="@drawable/ic_action_right"
android:visibility="gone"
app:backgroundTint="@color/color_F6FDF6"
app:fabSize="auto"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
tools:visibility="visible" />
<include
android:id="@+id/vstub_empty"
layout="@layout/load_empty"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<include
android:id="@+id/vstub_error"
layout="@layout/load_error"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone" />
</androidx.constraintlayout.widget.ConstraintLayout>
对了,上面说的现象播放后还无法暂停?
不是很清楚你什么情况,我测试 RecycleView 嵌套 RecycleView 正常
不是很清楚你什么情况,我测试 RecycleView 嵌套 RecycleView 正常
我有录屏,我发到qq群里吧
你有录频也没用啊····我不复现也不知道什么问题,怎么看····
经过测试,我不觉得这是 GSY 的问题
我发现日志一直会重复打印 视频渲染 中 Surface 创建失败后重新创建,我不太理解GSY的原理,可以简单介绍下提供点思路么
大致情况如图

大佬,我感觉是GSYTextureView 视频解码 渲染那块有问题。后来我换了其他播放器就没有上面的问题。
换着你可以设置SURFACE 模式试试
换着你可以设置SURFACE 模式试试
SURFACE和GLSURFACE模式 我都测试过了,都是有声但显示白屏
那就不是很清楚了,我这边测试正常,很尴尬
全屏播放结束时,在全屏的时候播放下一个视频的时候,也出现了只有声音,视频区域黑屏的现象,不知道是怎么回事?
@Vicent9920 要用 player.getCurrentPlayer() 去调用播放