I have two videos name v11.webm and v12.webm.
What i want is that these two videos should run seamlessly without any gap.
I am following the media source a
Perhaps a bit late, but I was able to figure this out. Your new video is overwriting the old one, because they both begin at time 0. You have to specify that your new video begins at time X before appending it, so your 'webkitsourceopen' event function should be:
/* forget the sourcebuffer variable, we'll just manipulate mediaSource */
mediaSource.addSourceBuffer('video/webm; codecs="vorbis,vp8"');
/* it seems ok to set initial duration 0 */
var duration = 0;
var totalVideos = 2;
/* use this type of loop to ensure that that a single video
is downloaded and appended before moving on to the next video,
mediasource seems picky about these being in order */
var i = 0;
(function readChunk_(i){
/* the GET function already returns a Uint8Array.
the demo you linked reads it in filereader in order to manipulate it;
you just want to immediately append it */
GET('v1' + (i + 1) + '.webm', function(uint8Array){
if(i == totalVideos) {
mediaSource.endOfStream();
} else {
/* assuming your videos are put together correctly
(i.e. duration is correct), set the timestamp offset
to the length of the total video */
mediaSource.sourceBuffers[0].timestampOffset = duration;
mediaSource.sourceBuffers[0].append(uint8Array);
/* set new total length */
duration = mediaSource.duration;
readChunk(++i);
}
});
})(i);
Now if only MediaSource wasn't so frustratingly picky about the structure of the videos it accepts. I have yet to find a single sample .webm that works besides the same one used in Eric Bidelman's Demo you linked.
EDIT: After doing more testing, the way I set duration may not be correct. If you seem to get exponential duration growth after each append, try setting the timestampoffset to 0 and not changing it. I have no idea why that seems to fix it, and it may be a problem with how I'm generating the webm files.