Fix ijk track

pull/123/head
FongMi 3 years ago
parent 0ca3253447
commit 444e18a679
  1. 12
      ijkplayer/src/main/java/tv/danmaku/ijk/media/player/IjkMediaPlayer.java
  2. 14
      ijkplayer/src/main/java/tv/danmaku/ijk/media/player/ui/IjkVideoView.java
  3. 10
      ijkplayer/src/main/java/tv/danmaku/ijk/media/player/ui/SubtitleView.java

@ -199,7 +199,7 @@ public final class IjkMediaPlayer extends AbstractMediaPlayer {
if (!mIsNativeInitialized) {
native_init();
native_setDot(0);
native_setLogLevel(BuildConfig.DEBUG ? IjkMediaPlayer.IJK_LOG_DEBUG : IjkMediaPlayer.IJK_LOG_SILENT);
native_setLogLevel(BuildConfig.DEBUG ? IjkMediaPlayer.IJK_LOG_INFO : IjkMediaPlayer.IJK_LOG_SILENT);
mIsNativeInitialized = true;
}
}
@ -574,11 +574,17 @@ public final class IjkMediaPlayer extends AbstractMediaPlayer {
}
public void selectTrack(int track) {
_setStreamSelected(track, true);
try {
_setStreamSelected(track, true);
} catch (Throwable ignored) {
}
}
public void deselectTrack(int track) {
_setStreamSelected(track, false);
try {
_setStreamSelected(track, false);
} catch (Throwable ignored) {
}
}
private native void _setStreamSelected(int stream, boolean select);

@ -282,9 +282,7 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl
private final IMediaPlayer.OnTimedTextListener mOnTimedTextListener = new IMediaPlayer.OnTimedTextListener() {
@Override
public void onTimedText(IMediaPlayer mp, IjkTimedText text) {
if (text != null) {
subtitleView.setText(text.getText());
}
subtitleView.onSubtitleChanged(text.getText());
}
};
@ -479,17 +477,15 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl
}
public void selectTrack(int track) {
long position = getCurrentPosition();
long position = Math.max(mStartPosition, getCurrentPosition());
mIjkPlayer.selectTrack(track);
subtitleView.setText("");
if (position != 0) seekTo(position);
if (position != 0) postDelayed(() -> seekTo(position), 500);
}
public void deselectTrack(int track) {
long position = getCurrentPosition();
long position = Math.max(mStartPosition, getCurrentPosition());
mIjkPlayer.deselectTrack(track);
subtitleView.setText("");
if (position != 0) seekTo(position);
if (position != 0) postDelayed(() -> seekTo(position), 500);
}
private void setPreferredTextLanguage() {

@ -4,6 +4,8 @@ import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.text.Html;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.widget.TextView;
@ -33,6 +35,14 @@ public class SubtitleView extends TextView {
strokeWidth = Utils.dp2px(getContext(), 0.6f);
}
public void onSubtitleChanged(String text) {
if (TextUtils.isEmpty(text)) {
setText("");
} else {
setText(Html.fromHtml(text.replaceAll("(?:\\r\\n)", "<br>").replaceAll("(?:\\r)", "<br>").replaceAll("(?:\\n)", "<br>").replaceAll("\\{[\\s\\S]*\\}", "")));
}
}
@Override
public void invalidate() {
if (isDrawing) return;

Loading…
Cancel
Save