Skip to main content

Additional video track information

The OTVTrackInfo class contains additional information about video tracks, each representing a video Adaptation Set extracted from the stream’s manifest. It provides the following methods:

  • isActive() returns true for the selected track, and false for all other video tracks in the list

  • getName() provides a string describing the track (which may be simply the language)

  • getLanguage() provides the language code string in either way of ISO-639-1 or ISO-639-2

  • getEncodeType() always returns 0 for video tracks - the codecs of the underlying video tracks must be retrieved via OTVVideoTrackInfo.getCodecs() - a list of the track’s underlying OTVVideoTrackInfo objects is retrieved via the getVideoTrackInfos() method

  • getCharacteristics() returns a string of track characteristics as advertised in some HLS streams.

  • getMimeType() will return the MIME type for the track

  • getAudioChannelCount() will return -1 for video tracks

  • getVideoTrackInfos() returns a list of OTVVideoTrackInfo objects. Each OTVVideoTrackInfo object corresponds to one of the video Representations belonging to the Adaptation Set for which this OTVTrackInfo holds information. Each Representation - and therefore each OTVVideoTrackInfo - may contain data on resolution, bitrate, framerate and aspect ratio.

The OTVVideoTrackInfo class contains the following methods for retrieving data about a Representation:

  • getBitrate() returns the video Representation’s bitrate

  • getWidth() returns the video Representation’s width in pixels

  • getHeight() returns the video Representation’s height in pixels

  • getFrameRate() returns the video Representation’s framerate

  • getCodecs() returns a string listing the video Representation’s codecs or null if unknown

  • getPixelWidthHeightRatio() returns the video Representation’s floating-point width-to-height ratio, or 1.0 if unknown

Click here to see example demonstrating the use of these methods.
JAVA
OTVTrackInfo[] tracks = mPlayer.getOTVTrackInfo();
int selectedTrackIndex = -1;
for (int index = 0; index < tracks.size(); ++index) {
  OTVTrackInfo trackInfo = tracks.valueAt(index);
  if (trackInfo.getType() == OTVTrackInfo.MEDIA_TRACK_TYPE_VIDEO) {
    // Video track
    if (trackInfo.isActive()) {
      selectedTrackIndex = index;
    }
    StringBuilder trackNameBuilder = track.getName().equals("") ?
        String.format(Locale.ENGLISH, "Track %d",index + 1) :
        track.getName();
    String semiColon = "";
    List<OTVVideoTrackInfo> videoTrackInfos = track.getVideoTrackInfos();
    if (videoTrackInfos != null) {
      for (OTVVideoTrackInfo videoTrackInfo : videoTrackInfos) {
        sb.append(semiColon);
        semiColon = "; ";
        sb.append(String.format(Locale.ENGLISH, "Bitrate: %d, Res: %dx%d, Codecs: %s", 
        videoTrackInfo.getBitrate(),
        videoTrackInfo.getWidth(),
        videoTrackInfo.getHeight(),
        videoTrackInfo.getCodecs()));
      }
    }
    String trackName = trackNameBuilder.toString();
    ...
  }
}
JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.