提交 e7368611 编写于 作者: Z Zhang Rui

android: retrieve language from meta

上级 03f3688e
......@@ -21,6 +21,7 @@ public class IjkMediaMeta {
public static final String IJKM_VAL_TYPE__VIDEO = "video";
public static final String IJKM_VAL_TYPE__AUDIO = "audio";
public static final String IJKM_VAL_TYPE__UNKNOWN = "unknown";
public static final String IJKM_KEY_LANGUAGE = "language";
public static final String IJKM_KEY_CODEC_NAME = "codec_name";
public static final String IJKM_KEY_CODEC_PROFILE = "codec_profile";
......@@ -200,6 +201,7 @@ public class IjkMediaMeta {
IjkStreamMeta streamMeta = new IjkStreamMeta(index);
streamMeta.mMeta = streamBundle;
streamMeta.mType = streamMeta.getString(IJKM_KEY_TYPE);
streamMeta.mLanguage = streamMeta.getString(IJKM_KEY_LANGUAGE);
if (TextUtils.isEmpty(streamMeta.mType))
continue;
......@@ -244,6 +246,7 @@ public class IjkMediaMeta {
public final int mIndex;
public String mType;
public String mLanguage;
// common
public String mCodecName;
......
......@@ -63,6 +63,15 @@ public class AndroidTrackInfo implements ITrackInfo {
return new AndroidMediaFormat(mediaFormat);
}
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
@Override
public String getLanguage() {
if (mTrackInfo == null)
return "und";
return mTrackInfo.getLanguage();
}
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
@Override
public int getTrackType() {
......
......@@ -26,6 +26,8 @@ public interface ITrackInfo {
IMediaFormat getFormat();
String getLanguage();
int getTrackType();
String getInfoInline();
......
......@@ -16,6 +16,8 @@
package tv.danmaku.ijk.media.player.misc;
import android.text.TextUtils;
import tv.danmaku.ijk.media.player.IjkMediaMeta;
public class IjkTrackInfo implements ITrackInfo {
......@@ -26,13 +28,21 @@ public class IjkTrackInfo implements ITrackInfo {
mStreamMeta = streamMeta;
}
public void setMediaMeta(IjkMediaMeta.IjkStreamMeta streamMeta) {
mStreamMeta = streamMeta;
}
@Override
public IMediaFormat getFormat() {
return new IjkMediaFormat(mStreamMeta);
}
public void setMediaMeta(IjkMediaMeta.IjkStreamMeta streamMeta) {
mStreamMeta = streamMeta;
@Override
public String getLanguage() {
if (mStreamMeta == null || TextUtils.isEmpty(mStreamMeta.mLanguage))
return "und";
return mStreamMeta.mLanguage;
}
@Override
......
......@@ -1086,6 +1086,7 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl
builder.appendSection(getContext().getString(R.string.mi_stream_fmt1, index));
}
builder.appendRow2(R.string.mi_type, buildTrackType(trackType));
builder.appendRow2(R.string.mi_language, buildLanguage(trackInfo.getLanguage()));
IMediaFormat mediaFormat = trackInfo.getFormat();
if (mediaFormat == null) {
......@@ -1172,6 +1173,12 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl
}
}
private String buildLanguage(String language) {
if (TextUtils.isEmpty(language))
return "und";
return language;
}
public ITrackInfo[] getTrackInfo() {
if (mMediaPlayer == null)
return null;
......
......@@ -26,6 +26,7 @@
<string name="mi_length">Length</string>
<string name="mi_stream_fmt1">Stream #%d</string>
<string name="mi_type">Type</string>
<string name="mi_language">Language</string>
<string name="mi_codec">Codec</string>
<string name="mi_frame_rate">Frame rate</string>
<string name="mi_bit_rate">Bit rate</string>
......
......@@ -637,7 +637,8 @@ IjkMediaPlayer_getMediaMeta(JNIEnv *env, jobject thiz)
goto LABEL_RETURN;
}
fillMetaInternal(env, jstream_bundle, streamRawMeta, IJKM_KEY_TYPE, IJKM_VAL_TYPE__UNKNOWN);
fillMetaInternal(env, jstream_bundle, streamRawMeta, IJKM_KEY_TYPE, IJKM_VAL_TYPE__UNKNOWN);
fillMetaInternal(env, jstream_bundle, streamRawMeta, IJKM_KEY_LANGUAGE, NULL);
const char *type = ijkmeta_get_string_l(streamRawMeta, IJKM_KEY_TYPE);
if (type) {
fillMetaInternal(env, jstream_bundle, streamRawMeta, IJKM_KEY_CODEC_NAME, NULL );
......
......@@ -263,6 +263,10 @@ void ijkmeta_set_avformat_context_l(IjkMediaMeta *meta, AVFormatContext *ic)
}
}
AVDictionaryEntry *lang = av_dict_get(st->metadata, "language", NULL, 0);
if (lang && lang->value)
ijkmeta_set_string_l(stream_meta, IJKM_KEY_LANGUAGE, lang->value);
ijkmeta_append_child_l(meta, stream_meta);
stream_meta = NULL;
}
......
......@@ -39,6 +39,7 @@
#define IJKM_VAL_TYPE__VIDEO "video"
#define IJKM_VAL_TYPE__AUDIO "audio"
#define IJKM_VAL_TYPE__UNKNOWN "unknown"
#define IJKM_KEY_LANGUAGE "language"
#define IJKM_KEY_CODEC_NAME "codec_name"
#define IJKM_KEY_CODEC_PROFILE "codec_profile"
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册