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 listen when new fields are 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.