Skip to main content

parseMedia()

属于@remotion/media-parser包。 从v4.0.190版本开始提供

warning

不稳定的API:此包是实验性的。我们可能随时更改API,直到删除此通知。

示例

解析托管视频
tsx
import {parseMedia} from '@remotion/media-parser';
 
const result = await parseMedia({
src: 'https://example.com/my-video.mp4',
fields: {
durationInSeconds: true,
dimensions: true,
},
});
 
console.log(result.durationInSeconds); // 10
console.log(result.dimensions); // {width: 1920, height: 1080}
解析托管视频
tsx
import {parseMedia} from '@remotion/media-parser';
 
const result = await parseMedia({
src: 'https://example.com/my-video.mp4',
fields: {
durationInSeconds: true,
dimensions: true,
},
});
 
console.log(result.durationInSeconds); // 10
console.log(result.dimensions); // {width: 1920, height: 1080}
解析本地文件
tsx
import {parseMedia} from '@remotion/media-parser';
import {nodeReader} from '@remotion/media-parser/node';
 
const result = await parseMedia({
src: '/Users/jonnyburger/Downloads/my-video.mp4',
fields: {
durationInSeconds: true,
dimensions: true,
},
reader: nodeReader,
});
解析本地文件
tsx
import {parseMedia} from '@remotion/media-parser';
import {nodeReader} from '@remotion/media-parser/node';
 
const result = await parseMedia({
src: '/Users/jonnyburger/Downloads/my-video.mp4',
fields: {
durationInSeconds: true,
dimensions: true,
},
reader: nodeReader,
});

API

warning

不稳定的API:此包是实验性的。我们可能随时更改API,直到删除此通知。

src

可以是本地文件路径、URL或File对象。
如果传递本地文件路径,则还必须将nodeReader作为reader参数传递。
如果传递File对象,则还必须将webFileReader作为reader参数传递。

fields?

指定要接收的字段的对象。
可能的字段包括:

dimensions

{width: number, height: number}

视频的尺寸。
任何旋转已应用 - 尺寸类似于媒体播放器显示的方式。
使用unrotatedDimensions获取旋转之前的尺寸。

durationInSeconds

number | null

视频的持续时间(秒)。

boxes

视频的内部结构。不稳定的内部数据结构,请参考TypeScript类型以查看其中包含的内容。

fps

number | null

视频的帧速率。

videoCodec

文件的视频编解码器。
如果存在多个视频轨道,则这将是第一个视频轨道。
其中之一是"h264""h265""vp8""vp9""av1""prores"null(如果是未知编解码器)。

audioCodec

文件的音频编解码器。
如果存在多个音频轨道,则这将是第一个音频轨道。
其中之一是'aac''mp3''aiff''opus''pcm''unknown'(音频存在但未识别)或null(如果未检测到音频)。

tracks

返回两个数组 videoTracksaudioTracks
它们的数据结构尚不稳定。

unrotatedDimensions

{width: number, height: number}

视频在旋转之前的尺寸。

rotation

number

视频的旋转角度(例如,-90 表示逆时针旋转 90°)。

reader?

一个读取器接口。
默认值为 fetchReader,使用 fetch() 来读取视频。
如果你传入 nodeReader,你还必须传入一个本地文件路径作为 src 参数。
如果你传入 webFileReader,你还必须传入一个 File 作为 src 参数。

onVideoTrack?

当检测到视频轨道时调用的回调函数。
它接收一个 VideoTrack 对象(API 尚不稳定)。
你必须返回 null 或一个回调函数,该函数对应于视频轨道的每个样本。

sample 的类型为 VideoSample,虽然并非所有字段都是稳定的,但它具有 EncodedVideoChunk 构造函数的所有必填字段。

读取视频帧
tsx
import {parseMedia, OnVideoTrack} from '@remotion/media-parser';
 
const onVideoTrack: OnVideoTrack = (track) => {
console.log(track);
 
return (sample) => {
console.log(new EncodedVideoChunk(sample))
};
};
读取视频帧
tsx
import {parseMedia, OnVideoTrack} from '@remotion/media-parser';
 
const onVideoTrack: OnVideoTrack = (track) => {
console.log(track);
 
return (sample) => {
console.log(new EncodedVideoChunk(sample))
};
};

onAudioTrack?

当检测到音频轨道时调用的回调函数。
它接收一个 AudioTrack 对象(API 尚不稳定)。
你必须返回 null 或一个回调函数,该函数对应于音频轨道的每个样本。

sample 的类型为 AudioSample,虽然并非所有字段都是稳定的,但它具有 EncodedAudioChunk 构造函数的所有必填字段。

读取音频帧
tsx
import {parseMedia, OnAudioTrack} from '@remotion/media-parser';
 
const onAudioTrack: OnAudioTrack = (track) => {
console.log(track);
 
return (sample) => {
console.log(new EncodedAudioChunk(sample))
};
};
读取音频帧
tsx
import {parseMedia, OnAudioTrack} from '@remotion/media-parser';
 
const onAudioTrack: OnAudioTrack = (track) => {
console.log(track);
 
return (sample) => {
console.log(new EncodedAudioChunk(sample))
};
};

signal?

一个 AbortSignal 实例。
如果信号被中止,解析器将停止读取媒体并停止解码过程,并抛出错误。

参见

I'm ready to translate the Markdown content into Chinese. Please go ahead and paste the content for translation.