Java源码示例:org.videolan.libvlc.Media.VideoTrack
示例1
private void init(Media media) {
mType = TYPE_ALL;
if (media != null) {
if (media.isParsed()) {
mLength = media.getDuration();
for (int i = 0; i < media.getTrackCount(); ++i) {
final Media.Track track = media.getTrack(i);
if (track == null)
continue;
if (track.type == Media.Track.Type.Video) {
final Media.VideoTrack videoTrack = (VideoTrack) track;
mType = TYPE_VIDEO;
mWidth = videoTrack.width;
mHeight = videoTrack.height;
} else if (mType == TYPE_ALL && track.type == Media.Track.Type.Audio){
mType = TYPE_AUDIO;
}
}
}
updateMeta(media);
if (mType == TYPE_ALL)
switch (media.getType()) {
case Media.Type.Directory:
mType = TYPE_DIR;
break;
case Media.Type.Playlist:
mType = TYPE_PLAYLIST;
break;
}
mSlaves = media.getSlaves();
}
defineType();
}
示例2
private void init(Media media) {
mType = TYPE_ALL;
if (media != null) {
if (media.isParsed()) {
mLength = media.getDuration();
for (int i = 0; i < media.getTrackCount(); ++i) {
final Media.Track track = media.getTrack(i);
if (track == null)
continue;
if (track.type == Media.Track.Type.Video) {
final Media.VideoTrack videoTrack = (VideoTrack) track;
mType = TYPE_VIDEO;
mWidth = videoTrack.width;
mHeight = videoTrack.height;
} else if (mType == TYPE_ALL && track.type == Media.Track.Type.Audio){
mType = TYPE_AUDIO;
}
}
}
updateMeta(media);
if (mType == TYPE_ALL)
switch (media.getType()) {
case Media.Type.Directory:
mType = TYPE_DIR;
break;
case Media.Type.Playlist:
mType = TYPE_PLAYLIST;
break;
}
mSlaves = media.getSlaves();
}
defineType();
}
示例3
private void init(Media media) {
mType = TYPE_ALL;
if (media != null) {
if (media.isParsed()) {
mLength = media.getDuration();
for (int i = 0; i < media.getTrackCount(); ++i) {
final Media.Track track = media.getTrack(i);
if (track == null)
continue;
if (track.type == Media.Track.Type.Video) {
final Media.VideoTrack videoTrack = (VideoTrack) track;
mType = TYPE_VIDEO;
mWidth = videoTrack.width;
mHeight = videoTrack.height;
} else if (mType == TYPE_ALL && track.type == Media.Track.Type.Audio){
mType = TYPE_AUDIO;
}
}
}
updateMeta(media);
if (mType == TYPE_ALL && media.getType() == Media.Type.Directory)
mType = TYPE_DIR;
}
if (mType == TYPE_ALL) {
final int index = mUri.toString().indexOf('?');
String location;
if (index == -1)
location = mUri.toString();
else
location = mUri.toString().substring(0, index);
int dotIndex = location.lastIndexOf(".");
if (dotIndex != -1) {
String fileExt = location.substring(dotIndex).toLowerCase(Locale.ENGLISH);
if( Extensions.VIDEO.contains(fileExt) ) {
mType = TYPE_VIDEO;
} else if (Extensions.AUDIO.contains(fileExt)) {
mType = TYPE_AUDIO;
} else if (Extensions.SUBTITLES.contains(fileExt)) {
mType = TYPE_SUBTITLE;
} else if (Extensions.PLAYLIST.contains(fileExt)) {
mType = TYPE_PLAYLIST;
}
}
}
}
示例4
@TargetApi(Build.VERSION_CODES.KITKAT)
static android.media.MediaFormat track2mediaFormat(Media.Track track) {
android.media.MediaFormat mf;
// TODO fix track
switch (track.type) {
case Media.Track.Type.Video: {
VideoTrack vt = (VideoTrack) track;
mf = android.media.MediaFormat.createVideoFormat(track.codec, vt.width, vt.height);
mf.setInteger(android.media.MediaFormat.KEY_WIDTH, vt.width);
mf.setInteger(android.media.MediaFormat.KEY_HEIGHT, vt.height);
mf.setFloat(android.media.MediaFormat.KEY_FRAME_RATE, vt.frameRateNum);
}
break;
case Media.Track.Type.Audio: {
AudioTrack at = (AudioTrack) track;
mf = android.media.MediaFormat.createAudioFormat(track.codec, at.rate, at.channels);
}
break;
case Media.Track.Type.Text: {
SubtitleTrack st = (SubtitleTrack) track;
mf = android.media.MediaFormat.createSubtitleFormat(track.codec, track.language);
mf.setString(VLCTrackKeys.VLC_SUBTITLE_TRACK_ECODING, st.encoding);
}
break;
default:
throw new IllegalArgumentException("Unknown track type.");
}
mf.setInteger(android.media.MediaFormat.KEY_BIT_RATE, track.bitrate);
mf.setString(android.media.MediaFormat.KEY_LANGUAGE, track.language);// VLC_TRACK_ORIGINAL_CODEC
mf.setString(VLCTrackKeys.VLC_TRACK_DESCRIPTION, track.description);
mf.setString(VLCTrackKeys.VLC_TRACK_ORIGINAL_CODEC, track.originalCodec);
// TODO
/*
* Missing maxInputSize = getOptionalIntegerV16(format,
* android.media.MediaFormat.KEY_MAX_INPUT_SIZE); pixelWidthHeightRatio
* = getOptionalFloatV16(format, KEY_PIXEL_WIDTH_HEIGHT_RATIO);
*/
return mf;
}
示例5
@TargetApi(Build.VERSION_CODES.KITKAT)
static android.media.MediaFormat track2mediaFormat(Media.Track track) {
android.media.MediaFormat mf;
// TODO fix track
switch (track.type) {
case Media.Track.Type.Video: {
VideoTrack vt = (VideoTrack) track;
mf = android.media.MediaFormat.createVideoFormat(track.codec, vt.width, vt.height);
mf.setInteger(android.media.MediaFormat.KEY_WIDTH, vt.width);
mf.setInteger(android.media.MediaFormat.KEY_HEIGHT, vt.height);
mf.setFloat(android.media.MediaFormat.KEY_FRAME_RATE, vt.frameRateNum);
}
break;
case Media.Track.Type.Audio: {
AudioTrack at = (AudioTrack) track;
mf = android.media.MediaFormat.createAudioFormat(track.codec, at.rate, at.channels);
}
break;
case Media.Track.Type.Text: {
SubtitleTrack st = (SubtitleTrack) track;
mf = android.media.MediaFormat.createSubtitleFormat(track.codec, track.language);
mf.setString(VLCTrackKeys.VLC_SUBTITLE_TRACK_ECODING, st.encoding);
}
break;
default:
throw new IllegalArgumentException("Unknown track type.");
}
mf.setInteger(android.media.MediaFormat.KEY_BIT_RATE, track.bitrate);
mf.setString(android.media.MediaFormat.KEY_LANGUAGE, track.language);// VLC_TRACK_ORIGINAL_CODEC
mf.setString(VLCTrackKeys.VLC_TRACK_DESCRIPTION, track.description);
mf.setString(VLCTrackKeys.VLC_TRACK_ORIGINAL_CODEC, track.originalCodec);
// TODO
/*
* Missing maxInputSize = getOptionalIntegerV16(format,
* android.media.MediaFormat.KEY_MAX_INPUT_SIZE); pixelWidthHeightRatio
* = getOptionalFloatV16(format, KEY_PIXEL_WIDTH_HEIGHT_RATIO);
*/
return mf;
}