MediaItem support decode

pull/123/head
FongMi 3 years ago
parent 992bfb1b6a
commit fc5a7f732a
  1. 6
      app/src/main/java/com/fongmi/android/tv/player/ExoUtil.java
  2. 2
      app/src/main/java/com/fongmi/android/tv/player/Players.java
  3. 15
      ijkplayer/src/main/java/tv/danmaku/ijk/media/player/IjkMediaPlayer.java

@ -7,6 +7,7 @@ import android.text.TextUtils;
import com.fongmi.android.tv.App;
import com.fongmi.android.tv.bean.Result;
import com.fongmi.android.tv.utils.FileUtil;
import com.fongmi.android.tv.utils.Prefers;
import com.google.android.exoplayer2.DefaultRenderersFactory;
import com.google.android.exoplayer2.MediaItem;
import com.google.android.exoplayer2.PlaybackException;
@ -50,8 +51,8 @@ public class ExoUtil {
return trackSelector;
}
public static RenderersFactory buildRenderersFactory(int decode) {
return new DefaultRenderersFactory(App.get()).setExtensionRendererMode(Math.abs(decode - 2));
public static RenderersFactory buildRenderersFactory() {
return new DefaultRenderersFactory(App.get()).setExtensionRendererMode(Math.abs(Prefers.getDecode() - 2));
}
public static CaptionStyleCompat getCaptionStyle() {
@ -75,6 +76,7 @@ public class ExoUtil {
if (errorCode == PlaybackException.ERROR_CODE_PARSING_MANIFEST_MALFORMED) builder.setMimeType(MimeTypes.APPLICATION_OCTET);
else if (errorCode == PlaybackException.ERROR_CODE_PARSING_CONTAINER_UNSUPPORTED) builder.setMimeType(MimeTypes.APPLICATION_M3U8);
if (!TextUtils.isEmpty(sub)) builder.setSubtitleConfigurations(getSubtitles(sub));
builder.setDecode(Prefers.getDecode());
return builder.build();
}

@ -65,7 +65,7 @@ public class Players implements Player.Listener, IMediaPlayer.OnInfoListener, IM
public void setupExo(StyledPlayerView view) {
if (exoPlayer != null) releaseExo();
exoPlayer = new ExoPlayer.Builder(App.get()).setLoadControl(new DefaultLoadControl()).setRenderersFactory(ExoUtil.buildRenderersFactory(decode)).setTrackSelector(ExoUtil.buildTrackSelector()).build();
exoPlayer = new ExoPlayer.Builder(App.get()).setLoadControl(new DefaultLoadControl()).setRenderersFactory(ExoUtil.buildRenderersFactory()).setTrackSelector(ExoUtil.buildTrackSelector()).build();
exoPlayer.addAnalyticsListener(this);
exoPlayer.setPlayWhenReady(true);
exoPlayer.addListener(this);

@ -45,12 +45,16 @@ import android.view.SurfaceHolder;
import java.io.FileDescriptor;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.lang.ref.WeakReference;
import java.lang.reflect.Field;
import java.net.URLEncoder;
import java.security.InvalidParameterException;
import java.util.ArrayList;
import java.util.Locale;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import tv.danmaku.ijk.media.player.annotations.AccessedByNative;
import tv.danmaku.ijk.media.player.annotations.CalledByNative;
@ -372,7 +376,16 @@ public final class IjkMediaPlayer extends AbstractMediaPlayer {
}
}
setDataSource(uri.toString(), headers);
setDataSource(encodeSpaceChinese(uri.toString()), headers);
}
private String encodeSpaceChinese(String str) throws UnsupportedEncodingException {
Pattern p = Pattern.compile("[\u4e00-\u9fa5 ]+");
Matcher m = p.matcher(str);
StringBuffer b = new StringBuffer();
while (m.find()) m.appendReplacement(b, URLEncoder.encode(m.group(0), "UTF-8"));
m.appendTail(b);
return b.toString();
}
/**

Loading…
Cancel
Save