添加首帧渲染监听器以改进视频播放体验

This commit is contained in:
2026-01-08 13:53:40 +08:00
parent e1b835c472
commit e68b13e0c2

View File

@@ -201,20 +201,30 @@ class FeatureHubActivity : AppCompatActivity() {
} }
private fun handleAliveItemClick(item: AliveStreamItem) { private fun handleAliveItemClick(item: AliveStreamItem) {
val url = item.url?.trim().orEmpty()
val intent = if (url.isNotEmpty()) {
LivePlayActivity.createIntent(
this,
resolvePlayModeFromUrl(url),
url,
autoStart = true
)
} else {
val liveMode = resolvePlayMode(item.playProtocol) val liveMode = resolvePlayMode(item.playProtocol)
val params = buildPlayParams(item) val params = buildPlayParams(item)
if (params == null) { if (params == null) {
Toast.makeText(this, "播放地址缺失", Toast.LENGTH_SHORT).show() Toast.makeText(this, "播放地址缺失", Toast.LENGTH_SHORT).show()
return return
} }
val intent = LivePlayActivity.createIntentWithParams( LivePlayActivity.createIntentWithParams(
this, this,
liveMode, liveMode,
params.vhost, params.vhost,
params.appName, params.appName,
params.streamName, params.streamName,
autoStart = true autoStart = true
).apply { )
}.apply {
item.previewImage?.let { putExtra(LivePlayActivity.EXTRA_PREVIEW_IMAGE_URL, it) } item.previewImage?.let { putExtra(LivePlayActivity.EXTRA_PREVIEW_IMAGE_URL, it) }
} }
startActivity(intent) startActivity(intent)
@@ -229,6 +239,14 @@ class FeatureHubActivity : AppCompatActivity() {
} }
} }
private fun resolvePlayModeFromUrl(url: String): SellyLiveMode {
return if (url.trim().lowercase().startsWith("rtmp://")) {
SellyLiveMode.RTMP
} else {
SellyLiveMode.RTC
}
}
private fun buildPlayParams(item: AliveStreamItem): PlayParams? { private fun buildPlayParams(item: AliveStreamItem): PlayParams? {
val env = envStore.read() val env = envStore.read()
val vhost = item.vhost?.trim().orEmpty().ifBlank { env.normalizedVhost() } val vhost = item.vhost?.trim().orEmpty().ifBlank { env.normalizedVhost() }