pull/183/head
FongMi 3 years ago
parent 4aba10d6d9
commit 855752abb6
  1. 13
      ijkplayer/src/main/java/tv/danmaku/ijk/media/player/IjkMediaPlayer.java
  2. 23
      ijkplayer/src/main/java/tv/danmaku/ijk/media/player/misc/AndroidTrackInfo.java
  3. 19
      ijkplayer/src/main/java/tv/danmaku/ijk/media/player/misc/IjkTrackInfo.java

@ -42,7 +42,6 @@ import java.lang.ref.WeakReference;
import java.net.URLEncoder;
import java.security.InvalidParameterException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Locale;
import java.util.Map;
@ -445,19 +444,9 @@ public final class IjkMediaPlayer extends AbstractMediaPlayer {
}
}
private List<IjkMediaMeta.IjkStreamMeta> getStreams() {
Bundle bundle = getMediaMeta();
if (bundle == null) return Collections.emptyList();
IjkMediaMeta mediaMeta = IjkMediaMeta.parse(bundle);
if (mediaMeta == null) return Collections.emptyList();
return mediaMeta.mStreams;
}
@Override
public List<ITrackInfo> getTrackInfo() {
List<ITrackInfo> trackInfos = new ArrayList<>();
for (IjkMediaMeta.IjkStreamMeta streamMeta : getStreams()) trackInfos.add(new IjkTrackInfo(streamMeta));
return trackInfos;
return IjkTrackInfo.fromMediaMeta(getMediaMeta());
}
@Override

@ -33,26 +33,25 @@ public class AndroidTrackInfo implements ITrackInfo {
return fromTrackInfo(mp.getTrackInfo());
}
private static List<ITrackInfo> fromTrackInfo(MediaPlayer.TrackInfo[] trackInfos) {
if (trackInfos == null) return Collections.emptyList();
List<ITrackInfo> androidTrackInfo = new ArrayList<>();
for (MediaPlayer.TrackInfo trackInfo : trackInfos) androidTrackInfo.add(new AndroidTrackInfo(trackInfo));
return androidTrackInfo;
private static List<ITrackInfo> fromTrackInfo(MediaPlayer.TrackInfo[] items) {
if (items == null) return Collections.emptyList();
List<ITrackInfo> trackInfos = new ArrayList<>();
for (MediaPlayer.TrackInfo item : items) trackInfos.add(new AndroidTrackInfo(item));
return trackInfos;
}
private AndroidTrackInfo(MediaPlayer.TrackInfo trackInfo) {
mTrackInfo = trackInfo;
initTrackType();
initTrackType(mTrackInfo = trackInfo);
}
private void initTrackType() {
if (mTrackInfo == null) {
private void initTrackType(MediaPlayer.TrackInfo trackInfo) {
if (trackInfo == null) {
setTrackType(MEDIA_TRACK_TYPE_UNKNOWN);
} else if (mTrackInfo.getTrackType() == MediaPlayer.TrackInfo.MEDIA_TRACK_TYPE_VIDEO) {
} else if (trackInfo.getTrackType() == MediaPlayer.TrackInfo.MEDIA_TRACK_TYPE_VIDEO) {
setTrackType(ITrackInfo.MEDIA_TRACK_TYPE_VIDEO);
} else if (mTrackInfo.getTrackType() == MediaPlayer.TrackInfo.MEDIA_TRACK_TYPE_AUDIO) {
} else if (trackInfo.getTrackType() == MediaPlayer.TrackInfo.MEDIA_TRACK_TYPE_AUDIO) {
setTrackType(ITrackInfo.MEDIA_TRACK_TYPE_AUDIO);
} else if (mTrackInfo.getTrackType() == MediaPlayer.TrackInfo.MEDIA_TRACK_TYPE_TIMEDTEXT || mTrackInfo.getTrackType() == MediaPlayer.TrackInfo.MEDIA_TRACK_TYPE_SUBTITLE) {
} else if (trackInfo.getTrackType() == MediaPlayer.TrackInfo.MEDIA_TRACK_TYPE_TIMEDTEXT || trackInfo.getTrackType() == MediaPlayer.TrackInfo.MEDIA_TRACK_TYPE_SUBTITLE) {
setTrackType(ITrackInfo.MEDIA_TRACK_TYPE_TEXT);
}
}

@ -17,8 +17,13 @@
package tv.danmaku.ijk.media.player.misc;
import android.os.Bundle;
import android.text.TextUtils;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import tv.danmaku.ijk.media.player.IjkMediaMeta;
public class IjkTrackInfo implements ITrackInfo {
@ -26,7 +31,19 @@ public class IjkTrackInfo implements ITrackInfo {
private final IjkMediaMeta.IjkStreamMeta mStreamMeta;
private int mTrackType = MEDIA_TRACK_TYPE_UNKNOWN;
public IjkTrackInfo(IjkMediaMeta.IjkStreamMeta streamMeta) {
public static List<ITrackInfo> fromMediaMeta(Bundle bundle) {
if (bundle == null) return Collections.emptyList();
return fromMediaMeta(IjkMediaMeta.parse(bundle));
}
private static List<ITrackInfo> fromMediaMeta(IjkMediaMeta mediaMeta) {
if (mediaMeta == null) return Collections.emptyList();
List<ITrackInfo> trackInfos = new ArrayList<>();
for (IjkMediaMeta.IjkStreamMeta streamMeta : mediaMeta.mStreams) trackInfos.add(new IjkTrackInfo(streamMeta));
return trackInfos;
}
private IjkTrackInfo(IjkMediaMeta.IjkStreamMeta streamMeta) {
initTrackType(mStreamMeta = streamMeta);
}

Loading…
Cancel
Save