diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingPlayerActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingPlayerActivity.java
index 6b2633b9a..b4af4931e 100644
--- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingPlayerActivity.java
+++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingPlayerActivity.java
@@ -49,6 +49,7 @@ public class SettingPlayerActivity extends BaseActivity implements UaCallback, B
format = new DecimalFormat("0.#");
mBinding.render.requestFocus();
mBinding.uaText.setText(Setting.getUa());
+ mBinding.libassText.setText(getSwitch(Setting.isLibAss()));
mBinding.tunnelText.setText(getSwitch(Setting.isTunnel()));
mBinding.speedText.setText(format.format(Setting.getSpeed()));
mBinding.bufferText.setText(String.valueOf(Setting.getBuffer()));
@@ -68,6 +69,7 @@ public class SettingPlayerActivity extends BaseActivity implements UaCallback, B
mBinding.scale.setOnClickListener(this::setScale);
mBinding.speed.setOnClickListener(this::onSpeed);
mBinding.buffer.setOnClickListener(this::onBuffer);
+ mBinding.libass.setOnClickListener(this::setLibAss);
mBinding.render.setOnClickListener(this::setRender);
mBinding.tunnel.setOnClickListener(this::setTunnel);
mBinding.caption.setOnClickListener(this::setCaption);
@@ -124,6 +126,11 @@ public class SettingPlayerActivity extends BaseActivity implements UaCallback, B
Setting.putBuffer(times);
}
+ private void setLibAss(View view) {
+ Setting.putLibAss(!Setting.isLibAss());
+ mBinding.libassText.setText(getSwitch(Setting.isLibAss()));
+ }
+
private void setRender(View view) {
int index = Setting.getRender();
Setting.putRender(index = index == render.length - 1 ? 0 : ++index);
diff --git a/app/src/leanback/res/layout/activity_setting_player.xml b/app/src/leanback/res/layout/activity_setting_player.xml
index b14a26884..c0abb35ad 100644
--- a/app/src/leanback/res/layout/activity_setting_player.xml
+++ b/app/src/leanback/res/layout/activity_setting_player.xml
@@ -96,6 +96,35 @@
android:gravity="end"
android:textColor="@color/white"
android:textSize="18sp"
+ tools:text="預設" />
+
+
+
+
+
+
+
+
diff --git a/app/src/main/java/com/fongmi/android/tv/Setting.java b/app/src/main/java/com/fongmi/android/tv/Setting.java
index eb80ab7d5..2338be87d 100644
--- a/app/src/main/java/com/fongmi/android/tv/Setting.java
+++ b/app/src/main/java/com/fongmi/android/tv/Setting.java
@@ -217,6 +217,14 @@ public class Setting {
Prefers.put("caption", caption);
}
+ public static boolean isLibAss() {
+ return Prefers.getBoolean("libass");
+ }
+
+ public static void putLibAss(boolean libass) {
+ Prefers.put("libass", libass);
+ }
+
public static boolean isTunnel() {
return Prefers.getBoolean("tunnel");
}
diff --git a/app/src/main/java/com/fongmi/android/tv/player/Players.java b/app/src/main/java/com/fongmi/android/tv/player/Players.java
index a2ac019d6..9bf0d812f 100644
--- a/app/src/main/java/com/fongmi/android/tv/player/Players.java
+++ b/app/src/main/java/com/fongmi/android/tv/player/Players.java
@@ -138,12 +138,12 @@ public class Players implements Player.Listener, ParseCallback, DrawHandler.Call
AssSubtitleParserFactory subtitleParserFactory = new AssSubtitleParserFactory(assHandler);
exoPlayer = new ExoPlayer.Builder(App.get()).setLoadControl(ExoUtil.buildLoadControl()).setTrackSelector(ExoUtil.buildTrackSelector()).setRenderersFactory(ExoUtil.buildRenderersFactory(isHard() ? EXTENSION_RENDERER_MODE_ON : EXTENSION_RENDERER_MODE_PREFER)).setMediaSourceFactory(ExoUtil.buildMediaSourceFactory(assHandler, subtitleParserFactory)).build();
exoPlayer.setAudioAttributes(AudioAttributes.DEFAULT, true);
+ if (Setting.isLibAss()) assHandler.init(exoPlayer);
exoPlayer.addAnalyticsListener(new EventLogger());
exoPlayer.setHandleAudioBecomingNoisy(true);
view.setRender(Setting.getRender());
exoPlayer.setPlayWhenReady(true);
exoPlayer.addListener(this);
- assHandler.init(exoPlayer);
view.setPlayer(exoPlayer);
this.view = view;
}
diff --git a/app/src/main/java/com/fongmi/android/tv/player/exo/MediaSourceFactory.java b/app/src/main/java/com/fongmi/android/tv/player/exo/MediaSourceFactory.java
index 52a1a23c0..85ca020ef 100644
--- a/app/src/main/java/com/fongmi/android/tv/player/exo/MediaSourceFactory.java
+++ b/app/src/main/java/com/fongmi/android/tv/player/exo/MediaSourceFactory.java
@@ -22,6 +22,7 @@ import androidx.media3.extractor.ExtractorsFactory;
import androidx.media3.extractor.ts.TsExtractor;
import com.fongmi.android.tv.App;
+import com.fongmi.android.tv.Setting;
import com.github.catvod.net.OkHttp;
import java.util.HashMap;
@@ -39,7 +40,11 @@ public class MediaSourceFactory implements MediaSource.Factory {
private ExtractorsFactory extractorsFactory;
public MediaSourceFactory(AssHandler assHandler, AssSubtitleParserFactory subtitleParserFactory) {
- defaultMediaSourceFactory = new DefaultMediaSourceFactory(getDataSourceFactory(), AssPlayerKt.withAssMkvSupport(getExtractorsFactory(), subtitleParserFactory, assHandler)).setSubtitleParserFactory(subtitleParserFactory);
+ if (Setting.isLibAss()) {
+ defaultMediaSourceFactory = new DefaultMediaSourceFactory(getDataSourceFactory(), AssPlayerKt.withAssMkvSupport(getExtractorsFactory(), subtitleParserFactory, assHandler)).setSubtitleParserFactory(subtitleParserFactory);
+ } else {
+ defaultMediaSourceFactory = new DefaultMediaSourceFactory(getDataSourceFactory(), getExtractorsFactory());
+ }
}
@NonNull
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index 63a15083c..ea488072f 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -93,6 +93,7 @@
播放核心
渲染方式
缩放比例
+ 字幕渲染
字幕样式
后台播放
音频软解
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index 42e7a3b59..1e4d5b510 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -93,6 +93,7 @@
播放核心
渲染方式
縮放比例
+ 字幕渲染
字幕樣式
背景播放
音訊軟解
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 3de00fb6b..11dd89abb 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -94,6 +94,7 @@
Player
Render
Scale
+ libass
Caption style
Background play
Audio software decode
diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingPlayerFragment.java b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingPlayerFragment.java
index 7146b4bd3..6b2dd4206 100644
--- a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingPlayerFragment.java
+++ b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingPlayerFragment.java
@@ -52,6 +52,7 @@ public class SettingPlayerFragment extends BaseFragment implements UaCallback, B
protected void initView() {
format = new DecimalFormat("0.#");
mBinding.uaText.setText(Setting.getUa());
+ mBinding.libassText.setText(getSwitch(Setting.isLibAss()));
mBinding.tunnelText.setText(getSwitch(Setting.isTunnel()));
mBinding.speedText.setText(format.format(Setting.getSpeed()));
mBinding.bufferText.setText(String.valueOf(Setting.getBuffer()));
@@ -72,6 +73,7 @@ public class SettingPlayerFragment extends BaseFragment implements UaCallback, B
mBinding.scale.setOnClickListener(this::onScale);
mBinding.speed.setOnClickListener(this::onSpeed);
mBinding.buffer.setOnClickListener(this::onBuffer);
+ mBinding.libass.setOnClickListener(this::setLibAss);
mBinding.render.setOnClickListener(this::setRender);
mBinding.tunnel.setOnClickListener(this::setTunnel);
mBinding.caption.setOnClickListener(this::setCaption);
@@ -125,6 +127,11 @@ public class SettingPlayerFragment extends BaseFragment implements UaCallback, B
Setting.putBuffer(times);
}
+ private void setLibAss(View view) {
+ Setting.putLibAss(!Setting.isLibAss());
+ mBinding.libassText.setText(getSwitch(Setting.isLibAss()));
+ }
+
private void setRender(View view) {
int index = Setting.getRender();
Setting.putRender(index = index == render.length - 1 ? 0 : ++index);
diff --git a/app/src/mobile/res/layout/fragment_setting_player.xml b/app/src/mobile/res/layout/fragment_setting_player.xml
index e78a558d5..4369cf656 100644
--- a/app/src/mobile/res/layout/fragment_setting_player.xml
+++ b/app/src/mobile/res/layout/fragment_setting_player.xml
@@ -123,6 +123,35 @@
+
+
+
+
+
+
+
+