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;

}