From 9cfad3fc85a35f58097ba1686b34bd407e7045c9 Mon Sep 17 00:00:00 2001 From: Sudev Kiyada Date: Wed, 4 Jun 2025 19:32:37 +0530 Subject: [PATCH] fetches video codec --- src/components/ScrollyVideo/js/ScrollyVideo.ts | 5 ++++- src/components/ScrollyVideo/js/videoDecoder.ts | 13 ++++++------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/components/ScrollyVideo/js/ScrollyVideo.ts b/src/components/ScrollyVideo/js/ScrollyVideo.ts index ac5f2d57..b1be2ff9 100644 --- a/src/components/ScrollyVideo/js/ScrollyVideo.ts +++ b/src/components/ScrollyVideo/js/ScrollyVideo.ts @@ -568,8 +568,11 @@ class ScrollyVideo { this.frames?.push(frame); }, this.debug - ).then(() => { + ).then((codec) => { this.usingWebCodecs = true; + if (typeof codec == 'string') { + this.componentState.framesData.codec = codec; + } }); } catch (error) { if (this.debug) diff --git a/src/components/ScrollyVideo/js/videoDecoder.ts b/src/components/ScrollyVideo/js/videoDecoder.ts index b635e71f..f303e7d2 100644 --- a/src/components/ScrollyVideo/js/videoDecoder.ts +++ b/src/components/ScrollyVideo/js/videoDecoder.ts @@ -128,7 +128,7 @@ const decodeVideo = ( debug: boolean; } ): Promise => - new Promise((resolve, reject) => { + new Promise((resolve, reject) => { if (debug) console.info('Decoding video from', src); try { @@ -136,7 +136,7 @@ const decodeVideo = ( const mp4boxfile = MP4Box.createFile(); // Holds the codec value - let codec; + let codec = 'N/A'; // Creates a VideoDecoder instance const decoder = new VideoDecoder({ @@ -150,7 +150,7 @@ const decodeVideo = ( setTimeout(() => { if (decoder.state !== 'closed') { decoder.close(); - resolve(); + resolve(codec); } }, 500); } @@ -166,7 +166,6 @@ const decodeVideo = ( if (info && info.videoTracks && info.videoTracks[0]) { [{ codec }] = info.videoTracks; if (debug) console.info('Video with codec:', codec); - // scrollyVideoState.framesData.codec = codec; // Define a type for moov to avoid using 'any' interface AvcCBox { @@ -247,7 +246,7 @@ const decodeVideo = ( ): Promise { if (result.done) { mp4boxfile.flush(); - return Promise.resolve(null); + return Promise.resolve(); } const buf = result.value.buffer as MP4BoxBuffer; @@ -272,7 +271,7 @@ const decodeVideo = ( * @param src * @param emitFrame * @param debug - * @returns {Promise|Promise*} + * @returns {Promise|Promise} */ export default ( src: string, @@ -296,5 +295,5 @@ export default ( // Otherwise, resolve nothing if (debug) console.info('WebCodecs is not available in this browser.'); - return Promise.resolve(); + return Promise.resolve('N/A'); };