Skip to content

Commit ed7419e

Browse files
committed
Add HEVC test case
1 parent 21efab0 commit ed7419e

File tree

2 files changed

+81
-0
lines changed

2 files changed

+81
-0
lines changed

tests/mse_mp4/hevc.html

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
<!DOCTYPE HTML>
2+
<html>
3+
<head>
4+
<title>Fullscreen: test page</title>
5+
<script>
6+
async function toggleFullScreen(element) {
7+
var mode = element.webkitPresentationMode;
8+
if (!element.fullscreenElement) {
9+
if (!!element.requestFullscreen)
10+
await element.requestFullscreen();
11+
else if (!!element.webkitEnterFullscreen)
12+
element.webkitEnterFullscreen();
13+
}
14+
else if (document.exitFullscreen)
15+
document.exitFullscreen();
16+
}
17+
18+
const manifest = {
19+
"url": "../../mediatest/fragmented/hevc/everestvr_5.7k_30s_360_h265_crf23_binaural_CREDIT_JON_GRIFFITH_injected.mp4","type":"video/mp4; codecs=\"hev1.1.6.H180.90,mp4a.40.2\"",
20+
"init":{"offset":0,"size":4120},
21+
"media": [
22+
{"offset":4120,"size":28177064,"timestamp":0,"duration":22.5225},
23+
{"offset":28181184,"size":554926,"timestamp":0,"duration":36.0448},
24+
{"offset":28736110,"size":120,"timestamp":0,"duration":30.03},
25+
{"offset":28736230,"size":6237514,"timestamp":22.5225,"duration":7.5075},
26+
{"offset":34973744,"size":182680,"timestamp":36.0448,"duration":12.014933333333333},
27+
{"offset":35156424,"size":562,"timestamp":48.059733333333334,"duration":0.0224}
28+
]
29+
};
30+
31+
async function fetchSegment(url, segmentManifest) {
32+
let request = new Request(url);
33+
request.headers.append("Range", `bytes=${segmentManifest.offset}-${segmentManifest.offset + segmentManifest.size - 1}`);
34+
const response = await fetch(request);
35+
return response.arrayBuffer();
36+
}
37+
38+
async function loadSegment(sourceBuffer, segment) {
39+
return new Promise((resolve) => {
40+
sourceBuffer.addEventListener("updateend", resolve, { once: true });
41+
sourceBuffer.appendBuffer(segment);
42+
});
43+
}
44+
45+
window.onload = async function() {
46+
const id = 'log';
47+
48+
if (!!!window.ManagedMediaSource)
49+
return;
50+
video2.disableRemotePlayback = true;
51+
var source = new ManagedMediaSource();
52+
await new Promise((resolve) => {
53+
video2.src = URL.createObjectURL(source);
54+
source.addEventListener("sourceopen", resolve, { once: true });
55+
});
56+
var sourceBuffer = source.addSourceBuffer(manifest.type);
57+
58+
const segment = await fetchSegment(manifest.url, manifest.init);
59+
await loadSegment(sourceBuffer, segment);
60+
61+
const fetchPromises = manifest.media.map(async (segment, index) => {
62+
return fetchSegment(manifest.url, segment);
63+
});
64+
for (var i = 0; i < fetchPromises.length; i++) {
65+
await Promise.all(fetchPromises.slice(0, i - 1));
66+
const data = await fetchPromises[i];
67+
await loadSegment(sourceBuffer, data);
68+
}
69+
70+
source.endOfStream();
71+
}
72+
</script>
73+
<body>
74+
<h2>HTML5 video with MSE video</h2>
75+
<div id="mse">
76+
<div id="videodiv2" style="width: 320px; height: 240px">
77+
<video id='video2' style="object-fit: cover;" width="100%" height="100%" playsinline loop controls></video>
78+
</div>
79+
</div>
80+
</body>
81+
</html>

0 commit comments

Comments
 (0)