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​

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

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.