| <!DOCTYPE html> |
| <html> |
| <head> |
| <title>Media Source Player</title> |
| </head> |
| <body onload="runTest();"> |
| <video controls></video> |
| <script src='eme_player_js/app_loader.js' type='text/javascript'></script> |
| <script type="text/javascript"> |
| var video = document.querySelector('video'); |
| |
| function onTimeUpdate() { |
| video.removeEventListener('timeupdate', onTimeUpdate); |
| video.currentTime = 0.9 * video.duration; |
| } |
| |
| function onSeeked() { |
| video.removeEventListener('ended', Utils.failTest); |
| Utils.installTitleEventHandler(video, 'ended'); |
| } |
| |
| // For those streams whose start time is greater than |
| // kSeekToStartFudgeRoom defined in source_buffer_stream.cc, we |
| // need to skip those time range. Otherwise it won't play |
| function onLoadedMetaData() { |
| var buf = video.buffered; |
| if (buf.length > 0) { |
| video.currentTime = buf.start(0); |
| } |
| } |
| |
| // The test completes after media starts playing, seeks to 0.9 of |
| // duration and fires the ended event. |
| // The test stops when an error or ended event fire unexpectedly. |
| function runTest() { |
| var testConfig = new TestConfig(); |
| testConfig.loadQueryParams(); |
| Utils.installTitleEventHandler(video, 'error'); |
| video.addEventListener('ended', Utils.failTest); |
| video.addEventListener('seeked', onSeeked); |
| video.addEventListener('timeupdate', onTimeUpdate); |
| video.addEventListener('loadedmetadata', onLoadedMetaData); |
| var source = MediaSourceUtils.loadMediaSourceFromTestConfig(testConfig); |
| video.src = window.URL.createObjectURL(source); |
| video.play(); |
| } |
| </script> |
| </body> |
| </html> |