Created
January 1, 2016 00:27
-
-
Save abhiguru/9fb26a51c4e8b57d3d48 to your computer and use it in GitHub Desktop.
Sample Source for vtt in ExoPlayer
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package vcuplayer; | |
import android.media.MediaPlayer; | |
import android.os.AsyncTask; | |
import android.util.Log; | |
import com.google.android.exoplayer.MediaFormat; | |
import com.google.android.exoplayer.MediaFormatHolder; | |
import com.google.android.exoplayer.SampleHolder; | |
import com.google.android.exoplayer.SampleSource; | |
import com.google.android.exoplayer.TrackRenderer; | |
import com.google.android.exoplayer.util.Assertions; | |
import com.google.android.exoplayer.util.MimeTypes; | |
import java.io.ByteArrayOutputStream; | |
import java.io.IOException; | |
import java.io.InputStream; | |
import java.net.URL; | |
import java.net.URLConnection; | |
import java.nio.ByteBuffer; | |
/** | |
* Created by aguru on 01/01/16. | |
*/ | |
public class HttpSampleSource extends AsyncTask<Void, Void, Void> implements SampleSource, SampleSource.SampleSourceReader { | |
private ByteBuffer byteBuffer; | |
private int byteBufferSize; | |
private URL url; | |
private String mimeType; | |
private MediaPlayer.TrackInfo trackInfo; | |
private boolean readNeeded = true; | |
HttpSampleSource(URL url, String mimeType){ | |
this.url = url; | |
this.mimeType = mimeType; | |
} | |
@Override | |
protected Void doInBackground(Void... params) { | |
try | |
{ | |
URLConnection conn = url.openConnection(); | |
InputStream inputStream = conn.getInputStream(); | |
ByteArrayOutputStream byteArrayOS = new ByteArrayOutputStream(); | |
byte[] buffer = new byte[1024]; | |
int len; | |
while ((len = inputStream.read(buffer)) != -1 && !isCancelled()) | |
{ | |
byteBufferSize += len; | |
byteArrayOS.write(buffer, 0, len); | |
} | |
byteBuffer = ByteBuffer.wrap(byteArrayOS.toByteArray()); | |
} catch (Exception e) | |
{ | |
Log.d("VCU Log", e.getMessage()); | |
} | |
return null; | |
} | |
@Override | |
public SampleSourceReader register() { | |
return null; | |
} | |
@Override | |
public void maybeThrowError() throws IOException { | |
} | |
@Override | |
public boolean prepare(long positionUs) { | |
if (getStatus() == AsyncTask.Status.PENDING) { | |
execute(); | |
} | |
return true; | |
} | |
@Override | |
public int getTrackCount() { | |
return 1; | |
} | |
@Override | |
public MediaFormat getFormat(int track) { | |
return MediaFormat.createTextFormat(Integer.toString(track), mimeType, | |
MediaFormat.NO_VALUE, TrackRenderer.MATCH_LONGEST_US, "en"); | |
} | |
@Override | |
public void enable(int track, long positionUs) { | |
readNeeded = true; | |
} | |
@Override | |
public boolean continueBuffering(int track, long positionUs) { | |
return false; | |
} | |
@Override | |
public int readData(int track, long positionUs, MediaFormatHolder formatHolder, | |
SampleHolder sampleHolder, boolean onlyReadDiscontinuity) { | |
if (byteBuffer == null) | |
{ | |
return NOTHING_READ; | |
} | |
if (sampleHolder != null && readNeeded){ | |
sampleHolder.size = byteBufferSize; | |
sampleHolder.data = byteBuffer; | |
readNeeded = false; | |
return SAMPLE_READ; | |
} | |
return END_OF_STREAM; | |
} | |
@Override | |
public void seekToUs(long positionUs) { | |
//return positionUs; | |
} | |
@Override | |
public long getBufferedPositionUs() { | |
return TrackRenderer.END_OF_TRACK_US; | |
} | |
@Override | |
public void disable(int track) { | |
} | |
@Override | |
public void release() { | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment