downloadAndParseMedia()
Same as parseMedia()
, but also downloads the media file to disk.
Meant to be used in Node.js and Bun.
Download a filetsx
import {downloadAndParseMedia } from '@remotion/media-parser';import {nodeWriter } from '@remotion/media-parser/node-writer';awaitdownloadAndParseMedia ({src : 'https://www.w3schools.com/html/mov_bbb.mp4',writer :nodeWriter ('output.mp4'),});
You can obtain fields like tracks
and duration
by passing them to the fields
object.
Download a file and get metadatatsx
import {downloadAndParseMedia } from '@remotion/media-parser';import {nodeWriter } from '@remotion/media-parser/node-writer';const {durationInSeconds ,tracks } = awaitdownloadAndParseMedia ({src : 'https://s3.amazonaws.com/bucket/uploaded-asset.mp4',writer :nodeWriter ('output.mp4'),fields : {durationInSeconds : true,tracks : true,},});// If here was reached, file is downloaded!console .log (durationInSeconds );console .log (tracks );
You can use callback functions to retrieve information as soon as it is available.
Throw an error to stop the download.
Stop the download if the video is too longtsx
import {downloadAndParseMedia } from '@remotion/media-parser';import {nodeWriter } from '@remotion/media-parser/node-writer';const {durationInSeconds } = awaitdownloadAndParseMedia ({src : 'https://s3.amazonaws.com/bucket/uploaded-asset.mp4',writer :nodeWriter ('output.mp4'),onDurationInSeconds : (duration ) => {if (duration &&duration > 600) {throw newError ('Video is too long');}},});
If an error occurs (including one you've thrown yourself), you can decide what to do using onError
.
Continue download despite errortsx
import {downloadAndParseMedia } from '@remotion/media-parser';import {nodeWriter } from '@remotion/media-parser/node-writer';awaitdownloadAndParseMedia ({src : 'https://s3.amazonaws.com/bucket/uploaded-asset.mp4',writer :nodeWriter ('output.mp4'),onError : (error ) => {// Force the file to be downloaded despite parsing error.// Note: At the end, the error will be thrown nonetheless.return {action : 'download'};// Default behavior:// Abort the download, delete the file and throw the error immediately.// return {action: 'fail'};},});
API
All of the same parameters for parseMedia()
are available, plus:
writer
The writer to use to write the downloaded file to disk. Currently available:
nodeWriter
from@remotion/media-parser/node-writer
: Writes to disk using Node.js'sfs
module.
onError
A function that is called when an error occurs. It receives the error as an argument.
You must return one of the following:
{action: 'download'}
: Continue downloading the file despite the error.{action: 'fail'}
: Abort the download, delete the file and throw the error immediately.
See also the example above.
The function may be async, parsing is paused until it resolves.