From 9e2835110486a2ecf95d948d1c5d6db99a35d82b Mon Sep 17 00:00:00 2001 From: okjack Date: Mon, 17 Jun 2024 19:15:20 +0800 Subject: [PATCH] Update TrackNameProvider.java --- .../android/tv/player/custom/TrackNameProvider.java | 9 +++++++-- .../danmaku/ijk/media/player/misc/AndroidTrackInfo.java | 6 ++++++ .../tv/danmaku/ijk/media/player/misc/ITrackInfo.java | 2 ++ .../tv/danmaku/ijk/media/player/misc/IjkTrackInfo.java | 7 +++++++ 4 files changed, 22 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/fongmi/android/tv/player/custom/TrackNameProvider.java b/app/src/main/java/com/fongmi/android/tv/player/custom/TrackNameProvider.java index 4c01bb7d3..41057ba51 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/custom/TrackNameProvider.java +++ b/app/src/main/java/com/fongmi/android/tv/player/custom/TrackNameProvider.java @@ -35,7 +35,7 @@ public class TrackNameProvider { } else { trackName = joinWithSeparator(buildLanguageString(format), buildLabelString(format)); } - return TextUtils.isEmpty(trackName) ? resources.getString(R.string.exo_track_unknown) : joinWithSeparator(trackName, buildMimeString(format)); + return TextUtils.isEmpty(trackName) ? resources.getString(R.string.exo_track_unknown) : joinWithSeparator(trackName, buildFrameRateString(format.frameRate), buildMimeString(format)); } public String getTrackName(ITrackInfo trackInfo) { @@ -48,7 +48,7 @@ public class TrackNameProvider { } else { trackName = joinWithSeparator(buildLanguageString(trackInfo.getLanguage())); } - return TextUtils.isEmpty(trackName) ? resources.getString(R.string.exo_track_unknown) : joinWithSeparator(trackName, buildMimeString(trackInfo.getMimeType())); + return TextUtils.isEmpty(trackName) ? resources.getString(R.string.exo_track_unknown) : joinWithSeparator(trackName, buildFrameRateString(trackInfo.getFps()), buildMimeString(trackInfo.getMimeType())); } private String buildResolutionString(Format format) { @@ -148,6 +148,11 @@ public class TrackNameProvider { return C.TRACK_TYPE_UNKNOWN; } + private String buildFrameRateString(float frameRate) { + if (frameRate <= 0) return ""; + return (int) Math.floor(frameRate) + "FPS"; + } + private String buildMimeString(Format format) { if (format.sampleMimeType == null) return ""; return buildMimeString(format.sampleMimeType); diff --git a/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/misc/AndroidTrackInfo.java b/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/misc/AndroidTrackInfo.java index 25c6b0340..c21923e29 100644 --- a/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/misc/AndroidTrackInfo.java +++ b/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/misc/AndroidTrackInfo.java @@ -100,4 +100,10 @@ public class AndroidTrackInfo implements ITrackInfo { public void setTrackType(int trackType) { mTrackType = trackType; } + + @Override + public float getFps() { + if (mTrackInfo == null || mTrackInfo.getFormat() == null) return 0; + return mTrackInfo.getFormat().getFloat(MediaFormat.KEY_MAX_FPS_TO_ENCODER); + } } \ No newline at end of file diff --git a/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/misc/ITrackInfo.java b/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/misc/ITrackInfo.java index 68b86ce1e..3636430e7 100644 --- a/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/misc/ITrackInfo.java +++ b/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/misc/ITrackInfo.java @@ -37,4 +37,6 @@ public interface ITrackInfo { int getWidth(); int getHeight(); + + float getFps(); } diff --git a/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/misc/IjkTrackInfo.java b/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/misc/IjkTrackInfo.java index a448543b4..f8aa1207d 100644 --- a/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/misc/IjkTrackInfo.java +++ b/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/misc/IjkTrackInfo.java @@ -101,4 +101,11 @@ public class IjkTrackInfo implements ITrackInfo { public void setTrackType(int trackType) { mTrackType = trackType; } + + @Override + public float getFps() { + if (mStreamMeta == null) return 0; + if (mStreamMeta.mFpsNum == 0 || mStreamMeta.mFpsDen == 0) return 0; + return mStreamMeta.mFpsNum / mStreamMeta.mFpsDen; + } }