Track info support mimeType

pull/171/head
FongMi 2 years ago
parent d111628856
commit 3830d4d9f6
  1. 14
      app/src/main/java/com/fongmi/android/tv/player/TrackNameProvider.java
  2. 72
      ijkplayer/src/main/java/tv/danmaku/ijk/media/player/IjkMediaMeta.java
  3. 6
      ijkplayer/src/main/java/tv/danmaku/ijk/media/player/misc/AndroidTrackInfo.java
  4. 2
      ijkplayer/src/main/java/tv/danmaku/ijk/media/player/misc/ITrackInfo.java
  5. 10
      ijkplayer/src/main/java/tv/danmaku/ijk/media/player/misc/IjkTrackInfo.java

@ -42,11 +42,11 @@ public class TrackNameProvider {
String trackName;
int trackType = trackInfo.getTrackType();
if (trackType == C.TRACK_TYPE_VIDEO) {
trackName = joinWithSeparator(buildResolutionString(trackInfo.getWidth(), trackInfo.getHeight()), buildBitrateString(trackInfo.getBitrate()));
trackName = joinWithSeparator(buildResolutionString(trackInfo.getWidth(), trackInfo.getHeight()), buildMimeString(trackInfo.getMimeType()), buildBitrateString(trackInfo.getBitrate()));
} else if (trackType == C.TRACK_TYPE_AUDIO) {
trackName = joinWithSeparator(buildLanguageString(trackInfo.getLanguage()), buildAudioChannelString(trackInfo.getChannelCount()), buildBitrateString(trackInfo.getBitrate()));
trackName = joinWithSeparator(buildLanguageString(trackInfo.getLanguage()), buildAudioChannelString(trackInfo.getChannelCount()), buildMimeString(trackInfo.getMimeType()), buildBitrateString(trackInfo.getBitrate()));
} else {
trackName = buildLanguageString(trackInfo.getLanguage());
trackName = joinWithSeparator(buildLanguageString(trackInfo.getLanguage()), buildMimeString(trackInfo.getMimeType()));
}
return TextUtils.isEmpty(trackName) ? resources.getString(R.string.exo_track_unknown) : trackName;
}
@ -150,7 +150,11 @@ public class TrackNameProvider {
private String buildMimeString(Format format) {
if (format.sampleMimeType == null) return "";
switch (format.sampleMimeType) {
return buildMimeString(format.sampleMimeType);
}
private String buildMimeString(String mimeType) {
switch (mimeType) {
case MimeTypes.AUDIO_DTS:
return "DTS";
case MimeTypes.AUDIO_DTS_HD:
@ -204,7 +208,7 @@ public class TrackNameProvider {
case MimeTypes.APPLICATION_DVBSUBS:
return "DVB";
default:
return format.sampleMimeType;
return mimeType;
}
}
}

@ -300,57 +300,13 @@ public class IjkMediaMeta {
}
}
public String getCodecLongNameInline() {
public String getCodecName() {
if (!TextUtils.isEmpty(mCodecLongName)) {
return mCodecLongName;
} else if (!TextUtils.isEmpty(mCodecName)) {
return mCodecName;
} else {
return "N/A";
}
}
public String getCodecShortNameInline() {
if (!TextUtils.isEmpty(mCodecName)) {
return mCodecName;
} else {
return "N/A";
}
}
public String getResolutionInline() {
if (mWidth <= 0 || mHeight <= 0) {
return "N/A";
} else if (mSarNum <= 0 || mSarDen <= 0) {
return String.format(Locale.US, "%d x %d", mWidth, mHeight);
} else {
return String.format(Locale.US, "%d x %d [SAR %d:%d]", mWidth, mHeight, mSarNum, mSarDen);
}
}
public String getFpsInline() {
if (mFpsNum <= 0 || mFpsDen <= 0) {
return "N/A";
} else {
return String.valueOf(((float) (mFpsNum)) / mFpsDen);
}
}
public String getBitrateInline() {
if (mBitrate <= 0) {
return "N/A";
} else if (mBitrate < 1000) {
return String.format(Locale.US, "%d bit/s", mBitrate);
} else {
return String.format(Locale.US, "%d kb/s", mBitrate / 1000);
}
}
public String getSampleRateInline() {
if (mSampleRate <= 0) {
return "N/A";
} else {
return String.format(Locale.US, "%d Hz", mSampleRate);
return "";
}
}
@ -371,29 +327,5 @@ public class IjkMediaMeta {
return (int) mChannelLayout;
}
}
public String getChannelLayoutInline() {
if (mChannelLayout <= 0) {
return "N/A";
} else {
if (mChannelLayout == AV_CH_LAYOUT_MONO) {
return "mono";
} else if (mChannelLayout == AV_CH_LAYOUT_STEREO) {
return "stereo";
} else if (mChannelLayout == AV_CH_LAYOUT_5POINT1) {
return "AV_CH_LAYOUT_5POINT1";
} else if (mChannelLayout == AV_CH_LAYOUT_5POINT0) {
return "AV_CH_LAYOUT_5POINT0";
} else if (mChannelLayout == AV_CH_LAYOUT_7POINT1) {
return "AV_CH_LAYOUT_7POINT1";
} else if (mChannelLayout == AV_CH_LAYOUT_7POINT0) {
return "AV_CH_LAYOUT_7POINT0";
} else if (mChannelLayout == AV_CH_LAYOUT_7POINT1_WIDE) {
return "AV_CH_LAYOUT_7POINT1_WIDE";
} else {
return String.format(Locale.US, "%x", mChannelLayout);
}
}
}
}
}

@ -62,6 +62,12 @@ public class AndroidTrackInfo implements ITrackInfo {
return mTrackInfo.getLanguage();
}
@Override
public String getMimeType() {
if (mTrackInfo == null || mTrackInfo.getFormat() == null) return "";
return mTrackInfo.getFormat().getString(MediaFormat.KEY_MIME);
}
@Override
public int getChannelCount() {
if (mTrackInfo == null || mTrackInfo.getFormat() == null) return 0;

@ -26,6 +26,8 @@ public interface ITrackInfo {
String getLanguage();
String getMimeType();
int getTrackType();
int getChannelCount();

@ -63,23 +63,33 @@ public class IjkTrackInfo implements ITrackInfo {
return mStreamMeta.mLanguage;
}
@Override
public String getMimeType() {
if (mStreamMeta == null) return "";
return mStreamMeta.getCodecName();
}
@Override
public int getChannelCount() {
if (mStreamMeta == null) return 0;
return mStreamMeta.getChannelCount();
}
@Override
public int getBitrate() {
if (mStreamMeta == null) return 0;
return (int) mStreamMeta.mBitrate;
}
@Override
public int getWidth() {
if (mStreamMeta == null) return 0;
return mStreamMeta.mWidth;
}
@Override
public int getHeight() {
if (mStreamMeta == null) return 0;
return mStreamMeta.mHeight;
}

Loading…
Cancel
Save