IMediaPlayerCustomDataProvider

The callback for custom media resource files.

onReadData

Occurs when the SDK reads the media resource data.

int onReadData(ByteBuffer buffer, int bufferSize);

When you call the openWithMediaSource method to open a media resource, the SDK triggers this callback and request you to pass in the buffer of the media resource data.

Parameters

buffer
An input parameter. Data buffer (bytes). Write the bufferSize data reported by the SDK into this parameter.
bufferSize
The length of the data buffer (bytes).

Returns

  • If the data is read successfully, pass in the length of the data (bytes) you actually read in the return value.
  • If reading the data fails, pass in 0 in the return value.

onSeek

Occurs when the SDK seeks the media resource data.

long onSeek(long offset, int whence);

When you call the openWithMediaSource or open [1/2] method to open a custom media resource, the SDK triggers this callback to request the specified location in the media resource.

Parameters

offset
An input parameter. The offset of the target position relative to the starting point, in bytes. The value can be positive or negative.
whence
An input parameter. The starting point. You can set it as one of the following values:
  • 0: The starting point is the head of the data, and the actual data offset after seeking is offset.
  • 1: The starting point is the current position, and the actual data offset after seeking is the current position plus offset.
  • 2: The starting point is the end of the data, and the actual data offset after seeking is the whole data length plus offset.
  • 65536: Do not perform position seeking, return the file size. Agora recommends that you use this parameter value when playing pure audio files such as MP3 and WAV.

Returns

  • When whence is 65536, the media file size is returned.
  • When whence is 0, 1, or 2, the actual data offset after the seeking is returned.
  • -1: Seeking failed.