Skip to content

Commit a238526

Browse files
save file
1 parent c300b49 commit a238526

File tree

1 file changed

+40
-11
lines changed

1 file changed

+40
-11
lines changed

blog/25-11-15/ffmpeg-in-the-browser/ffmpeg-in-the-browser.html

Lines changed: 40 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@
7070
var fwtldr;
7171
var ffprobe;
7272
var m4demo;
73+
var webcodec;
7374

7475

7576

@@ -78,17 +79,18 @@
7879

7980
async function init(){
8081

81-
menu = menumod();
82+
menu = menumod();
8283

83-
hdr = mod['blog-hdr'];
84-
log = mod['log-mod'];
84+
hdr = mod['blog-hdr'];
85+
log = mod['log-mod'];
8586

86-
vcdemo = mod['videoconverter-demo'];
87-
vctldr = mod['videoconverter-tldr'];
88-
fwdemo = mod['ffmpeg-wasm-demo'];
89-
fwtldr = mod['ffmpeg-wasm-tldr'];
90-
ffprobe = mod.ffprobe;
91-
m4demo = mod['mp4box-demo'];
87+
vcdemo = mod['videoconverter-demo'];
88+
vctldr = mod['videoconverter-tldr'];
89+
fwdemo = mod['ffmpeg-wasm-demo'];
90+
fwtldr = mod['ffmpeg-wasm-tldr'];
91+
ffprobe = mod.ffprobe;
92+
m4demo = mod['mp4box-demo'];
93+
webcodec = mod['webcodec'];
9294

9395
hdr.initmod({ext,$});
9496
log.initmod({ext,$});
@@ -98,6 +100,7 @@
98100
fwtldr.initmod({ext,$,menu,ace});
99101
ffprobe.initmod({ext,$,menu,ace});
100102
m4demo.initmod({ext,$,menu,ace});
103+
webcodec.initmod({ext,$,menumod,menu,ace});
101104

102105

103106
await Promise.all([
@@ -109,6 +112,7 @@
109112
fwtldr.init(),
110113
ffprobe.init(),
111114
m4demo.init(),
115+
webcodec.init(),
112116
]);
113117

114118

@@ -214,7 +218,9 @@
214218
{margin:30px 0;display:block}
215219

216220

217-
221+
.br
222+
{margin-top:0.8em}
223+
218224
</style>
219225

220226
</head>
@@ -439,6 +445,27 @@ <h3>
439445
Further Reading : Minimal h.264-in-javascript overview
440446
</h3>
441447
<p>
448+
<a href='https://developer.mozilla.org/en-US/docs/Web/API/WebCodecs_API'>
449+
WebCodecs API
450+
<span class=link-domain>
451+
developer.mozilla.org
452+
</span>
453+
</a>
454+
<div class=br></div>
455+
<a href='https://developer.mozilla.org/en-US/docs/Web/API/VideoDecoder'>
456+
VideoDecoder
457+
<span class=link-domain>
458+
developer.mozilla.org
459+
</span>
460+
</a>
461+
<div class=br></div>
462+
<a href='https://developer.mozilla.org/en-US/docs/Web/API/VideoEncoder'>
463+
VideoEncoder
464+
<span class=link-domain>
465+
developer.mozilla.org
466+
</span>
467+
</a>
468+
<div class=br></div>
442469
If you only need to take an H.264 keyframe (IDR) and the next frames and turn a single decoded frame into a JPEG,
443470
the most “minimal” modern approach in the browser is WebCodecs. It lets you feed compressed H.264 bytes,
444471
get decoded VideoFrames, draw them to a canvas, and export as JPEG—no heavy libraries required. Key detail:
@@ -464,7 +491,7 @@ <h3>
464491
Minimal webcodecs example: decode one frame and export jpeg
465492
</h3>
466493

467-
<snippet-editor component src='ex/webcodec-api.js'></snippet-editor>
494+
<snippet-editor id=webcodec component fullsize src='ex/webcodec-api.js'></snippet-editor>
468495

469496
<h4>
470497
Tips:
@@ -574,6 +601,8 @@ <h4>
574601

575602
m4demo.initdom();
576603

604+
webcodec.initdom();
605+
577606

578607

579608
}//initdom

0 commit comments

Comments
 (0)