Support video track

pull/123/head
FongMi 3 years ago
parent d040ddd544
commit a8f935d427
  1. 2
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java
  2. 2
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
  3. 16
      app/src/leanback/res/layout/view_control_live.xml
  4. 16
      app/src/leanback/res/layout/view_control_vod.xml
  5. 10
      app/src/main/java/com/fongmi/android/tv/ui/custom/TrackNameProvider.java
  6. 1
      app/src/main/res/values-zh-rCN/strings.xml
  7. 1
      app/src/main/res/values-zh-rTW/strings.xml
  8. 1
      app/src/main/res/values/strings.xml
  9. 10
      ijkplayer/src/main/java/tv/danmaku/ijk/media/player/misc/ITrackInfo.java
  10. 58
      ijkplayer/src/main/java/tv/danmaku/ijk/media/player/misc/IjkTrackInfo.java

@ -204,6 +204,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis
mBinding.video.setOnClickListener(view -> onVideo());
mBinding.control.text.setOnClickListener(this::onTrack);
mBinding.control.audio.setOnClickListener(this::onTrack);
mBinding.control.video.setOnClickListener(this::onTrack);
mBinding.control.next.setOnClickListener(view -> checkNext());
mBinding.control.prev.setOnClickListener(view -> checkPrev());
mBinding.control.scale.setOnClickListener(view -> onScale());
@ -778,6 +779,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis
private void setTrackVisible(boolean visible) {
mBinding.control.text.setVisibility(visible && mPlayers.haveTrack(C.TRACK_TYPE_TEXT) ? View.VISIBLE : View.GONE);
mBinding.control.audio.setVisibility(visible && mPlayers.haveTrack(C.TRACK_TYPE_AUDIO) ? View.VISIBLE : View.GONE);
mBinding.control.video.setVisibility(visible && mPlayers.haveTrack(C.TRACK_TYPE_VIDEO) ? View.VISIBLE : View.GONE);
}
private void setDefaultTrack() {

@ -151,6 +151,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
mBinding.control.seek.setListener(mPlayers);
mBinding.control.text.setOnClickListener(this::onTrack);
mBinding.control.audio.setOnClickListener(this::onTrack);
mBinding.control.video.setOnClickListener(this::onTrack);
mBinding.control.home.setOnClickListener(view -> onHome());
mBinding.control.scale.setOnClickListener(view -> onScale());
mBinding.control.speed.setOnClickListener(view -> onSpeed());
@ -674,6 +675,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
private void setTrackVisible(boolean visible) {
mBinding.control.text.setVisibility(visible && mPlayers.haveTrack(C.TRACK_TYPE_TEXT) ? View.VISIBLE : View.GONE);
mBinding.control.audio.setVisibility(visible && mPlayers.haveTrack(C.TRACK_TYPE_AUDIO) ? View.VISIBLE : View.GONE);
mBinding.control.video.setVisibility(visible && mPlayers.haveTrack(C.TRACK_TYPE_VIDEO) ? View.VISIBLE : View.GONE);
}
@Subscribe(threadMode = ThreadMode.MAIN)

@ -158,6 +158,22 @@
android:visibility="gone"
tools:visibility="visible" />
<TextView
android:id="@+id/video"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="12dp"
android:background="@drawable/selector_text"
android:focusable="true"
android:focusableInTouchMode="true"
android:nextFocusDown="@id/parse"
android:tag="2"
android:text="@string/play_track_video"
android:textColor="@color/white"
android:textSize="14sp"
android:visibility="gone"
tools:visibility="visible" />
<TextView
android:id="@+id/invert"
android:layout_width="wrap_content"

@ -156,6 +156,22 @@
android:visibility="gone"
tools:visibility="visible" />
<TextView
android:id="@+id/video"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="12dp"
android:background="@drawable/selector_text"
android:focusable="true"
android:focusableInTouchMode="true"
android:nextFocusDown="@id/parse"
android:tag="2"
android:text="@string/play_track_video"
android:textColor="@color/white"
android:textSize="14sp"
android:visibility="gone"
tools:visibility="visible" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"

@ -41,7 +41,9 @@ public class TrackNameProvider {
public String getTrackName(IjkTrackInfo trackInfo) {
String trackName;
int trackType = trackInfo.getTrackType();
if (trackType == C.TRACK_TYPE_AUDIO) {
if (trackType == C.TRACK_TYPE_VIDEO) {
trackName = joinWithSeparator(buildResolutionString(trackInfo.getWidth(), trackInfo.getHeight()), buildBitrateString(trackInfo.getBitrate()));
} else if (trackType == C.TRACK_TYPE_AUDIO) {
trackName = joinWithSeparator(buildLanguageString(trackInfo.getLanguage()), buildAudioChannelString(trackInfo.getChannelCount()), buildBitrateString(trackInfo.getBitrate()));
} else {
trackName = buildLanguageString(trackInfo.getLanguage());
@ -50,8 +52,10 @@ public class TrackNameProvider {
}
private String buildResolutionString(Format format) {
int width = format.width;
int height = format.height;
return buildResolutionString(format.width, format.height);
}
private String buildResolutionString(int width, int height) {
return width == Format.NO_VALUE || height == Format.NO_VALUE ? "" : resources.getString(R.string.exo_track_resolution, width, height);
}

@ -43,6 +43,7 @@
<string name="play_ready">准备播放:<xliff:g name="name">%s</xliff:g></string>
<string name="play_track_text">字幕</string>
<string name="play_track_audio">音轨</string>
<string name="play_track_video">视轨</string>
<string name="play_invert">反转</string>
<string name="play_across">跨类</string>
<string name="play_oped">片头片尾</string>

@ -43,6 +43,7 @@
<string name="play_ready">準備播放:<xliff:g name="name">%s</xliff:g></string>
<string name="play_track_text">字幕</string>
<string name="play_track_audio">音軌</string>
<string name="play_track_video">視軌</string>
<string name="play_invert">反轉</string>
<string name="play_across">跨類</string>
<string name="play_oped">片頭片尾</string>

@ -43,6 +43,7 @@
<string name="play_ready">Ready to play: <xliff:g name="name">%s</xliff:g></string>
<string name="play_track_text">Text</string>
<string name="play_track_audio">Audio</string>
<string name="play_track_video">Video</string>
<string name="play_invert">Invert</string>
<string name="play_across">Across</string>
<string name="play_oped">OP&amp;ED</string>

@ -24,15 +24,5 @@ public interface ITrackInfo {
int MEDIA_TRACK_TYPE_VIDEO = 2;
int MEDIA_TRACK_TYPE_TEXT = 3;
IMediaFormat getFormat();
String getLanguage();
int getTrackType();
int getChannelCount();
int getBitrate();
String getInfoInline();
}

@ -19,8 +19,6 @@ package tv.danmaku.ijk.media.player.misc;
import android.text.TextUtils;
import androidx.annotation.NonNull;
import tv.danmaku.ijk.media.player.IjkMediaMeta;
public class IjkTrackInfo implements ITrackInfo {
@ -42,77 +40,37 @@ public class IjkTrackInfo implements ITrackInfo {
}
}
@Override
public IMediaFormat getFormat() {
return new IjkMediaFormat(mStreamMeta);
}
@Override
public String getLanguage() {
if (mStreamMeta == null || TextUtils.isEmpty(mStreamMeta.mLanguage)) return "und";
return mStreamMeta.mLanguage;
}
@Override
public int getChannelCount() {
return mStreamMeta.getChannelCount();
}
@Override
public int getBitrate() {
return (int) mStreamMeta.mBitrate;
}
@Override
public int getTrackType() {
return mTrackType;
public int getWidth() {
return mStreamMeta.mWidth;
}
public void setTrackType(int trackType) {
mTrackType = trackType;
public int getHeight() {
return mStreamMeta.mHeight;
}
@NonNull
@Override
public String toString() {
return getClass().getSimpleName() + '{' + getInfoInline() + "}";
public int getTrackType() {
return mTrackType;
}
@Override
public String getInfoInline() {
StringBuilder out = new StringBuilder(128);
switch (mTrackType) {
case MEDIA_TRACK_TYPE_VIDEO:
out.append("VIDEO");
out.append(", ");
out.append(mStreamMeta.getCodecShortNameInline());
out.append(", ");
out.append(mStreamMeta.getBitrateInline());
out.append(", ");
out.append(mStreamMeta.getResolutionInline());
break;
case MEDIA_TRACK_TYPE_AUDIO:
out.append("AUDIO");
out.append(", ");
out.append(mStreamMeta.getCodecShortNameInline());
out.append(", ");
out.append(mStreamMeta.getBitrateInline());
out.append(", ");
out.append(mStreamMeta.getSampleRateInline());
out.append(", ");
out.append(mStreamMeta.getChannelLayoutInline());
break;
case MEDIA_TRACK_TYPE_TEXT:
out.append("TIMEDTEXT");
out.append(", ");
out.append(mStreamMeta.getCodecShortNameInline());
out.append(", ");
out.append(mStreamMeta.mLanguage);
break;
default:
out.append("UNKNOWN");
break;
}
return out.toString();
public void setTrackType(int trackType) {
mTrackType = trackType;
}
}

Loading…
Cancel
Save