<!DOCTYPE html> <html> <head> <meta charset=utf-8> <title>HLS VP9/fMP4 test</title> <link rel=stylesheet type=text/css href=video-js/video-js.css> </head> <body> <h1>HLS WebM test</h1> <p id=hls>Checking HLS support...</p> <p id=mse>Checking MSE VP9 support...</p> <p id=webm>Checking flat WebM VP8 / Vorbis support...</p> <p id=wasm>Checking WebAssembly support...</p> <h2>Caminandes - Llamigos</h2> <p>WebM VP9 and VP8 in front, MJPEG next, HLS with VP9-in-MP4 video with Opus-in-MP4 or AAC audio activated on JS.</p> <video controls width=640 height=360> <source type="video/webm; codecs="vp9, opus"" src=new-vp9.webm> <source type="video/webm; codecs="vp8, vorbis"" src=new-vp8.webm> <source type="video/quicktime; codecs="jpeg, mp4a.6b"" src=new-mjpeg.mov> <source type=application/vnd.apple.mpegurl src=new.m3u8> </video> <h2>Sources</h2> <p>Flat WebM VP9/Opus</p> <video controls width=640 height=360> <source type="video/webm; codecs="vp9, opus"" src=new-vp9.webm> </video> <p>Flat WebM VP8/Vorbis</p> <video controls width=640 height=360> <source type="video/webm; codecs="vp8, vorbis"" src=new-vp8.webm> </video> <p>Flat Quicktime MJPEG/MP3</p> <video controls width=640 height=360> <source type="video/quicktime; codecs="jpeg, mp4a.6b"" src=new-mjpeg.mov> </video> <p>HLS</p> <video controls width=640 height=360> <source type=application/vnd.apple.mpegurl src=new.m3u8> </video> <h2>Components</h2> <p>HLS VP9 MP4 alone (no audio)</p> <video controls width=640 height=360> <source type=application/vnd.apple.mpegurl src=new-vp9.m3u8> </video> <p>HLS MJPEG MP4 alone (no audio)</p> <video controls width=640 height=360> <source type=application/vnd.apple.mpegurl src=new-jpeg.m3u8> </video> <p>HLS MJPEG TS alone (no audio)</p> <video controls width=640 height=360> <source type=application/vnd.apple.mpegurl src=new-jpeg-ts.m3u8> </video> <p>HLS Opus MP4 alone (only audio)</p> <video controls width=640 height=360> <source type=application/vnd.apple.mpegurl src=new-opus.m3u8> </video> <p>HLS MP3 MP4 alone (only audio)</p> <video controls width=640 height=360> <source type=application/vnd.apple.mpegurl src=new-mp3-mp4.m3u8> </video> <p>HLS MP3 TS alone (only audio)</p> <video controls width=640 height=360> <source type=application/vnd.apple.mpegurl src=new-mp3-ts.m3u8> </video> <p>HLS MP3 raw alone (only audio)</p> <video controls width=640 height=360> <source type=application/vnd.apple.mpegurl src=new-mp3-raw.m3u8> </video> <script> let video = document.createElement('video'); if (video.canPlayType('application/vnd.apple.mpegurl')) { hls.textContent = 'native HLS playback supported'; hls.style.color = 'green'; } else { hls.textContent = 'no native HLS'; hls.style.color = 'red'; } if (typeof MediaSource == 'function') { let codecs = [ ['VP9-in-WebM', 'video/webm; codecs="vp9"'], ['Opus-in-WebM', 'audio/webm; codecs="opus"'], ['VP9-in-MP4', 'video/mp4; codecs="vp09.00.10.08"'], ['Opus-in-MP4', 'audio/mp4; codecs="opus"'], ['MP3', 'audio/mp3'], ]; let yes = []; let no = []; for (let [name, mime] of codecs) { if (MediaSource.isTypeSupported(mime)) { yes.push(name); } else { no.push(name); } } if (yes.length == codecs.length) { mse.textContent = 'MSE supports ' + yes.join(', '); mse.style.color = 'green'; } else { mse.textContent = 'MSE supports ' + yes.join(', ') + ' but not ' + no.join(', '); mse.style.color = 'orange'; } } else { mse.textContent = 'MSE not supported'; mse.style.color = 'red'; } if (video.canPlayType('video/webm')) { webm.textContent = 'flat WebM supported'; webm.style.color = 'green'; } else { webm.textContent = 'flat WebM not supported'; webm.style.color = 'red'; } if (typeof WebAssembly == 'object') { wasm.textContent = 'WebAssembly supported'; wasm.style.color = 'green'; } else { wasm.textContent = 'no WebAssembly support'; wasm.style.color = 'red'; } </script> </body> </html>