parseMedia()
属于@remotion/media-parser
包。
从v4.0.190版本开始提供
不稳定的API:此包是实验性的。我们可能随时更改API,直到删除此通知。
示例
解析托管视频tsx
import {parseMedia } from '@remotion/media-parser';constresult = awaitparseMedia ({src : 'https://example.com/my-video.mp4',fields : {durationInSeconds : true,dimensions : true,},});console .log (result .durationInSeconds ); // 10console .log (result .dimensions ); // {width: 1920, height: 1080}
解析托管视频tsx
import {parseMedia } from '@remotion/media-parser';constresult = awaitparseMedia ({src : 'https://example.com/my-video.mp4',fields : {durationInSeconds : true,dimensions : true,},});console .log (result .durationInSeconds ); // 10console .log (result .dimensions ); // {width: 1920, height: 1080}
解析本地文件tsx
import {parseMedia } from '@remotion/media-parser';import {nodeReader } from '@remotion/media-parser/node';constresult = awaitparseMedia ({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';constresult = awaitparseMedia ({src : '/Users/jonnyburger/Downloads/my-video.mp4',fields : {durationInSeconds : true,dimensions : true,},reader :nodeReader ,});
API
不稳定的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';constonVideoTrack :OnVideoTrack = (track ) => {console .log (track );return (sample ) => {console .log (newEncodedVideoChunk (sample ))};};
读取视频帧tsx
import {parseMedia ,OnVideoTrack } from '@remotion/media-parser';constonVideoTrack :OnVideoTrack = (track ) => {console .log (track );return (sample ) => {console .log (newEncodedVideoChunk (sample ))};};
onAudioTrack?
当检测到音频轨道时调用的回调函数。
它接收一个 AudioTrack
对象(API 尚不稳定)。
你必须返回 null
或一个回调函数,该函数对应于音频轨道的每个样本。
sample
的类型为 AudioSample
,虽然并非所有字段都是稳定的,但它具有 EncodedAudioChunk
构造函数的所有必填字段。
读取音频帧tsx
import {parseMedia ,OnAudioTrack } from '@remotion/media-parser';constonAudioTrack :OnAudioTrack = (track ) => {console .log (track );return (sample ) => {console .log (newEncodedAudioChunk (sample ))};};
读取音频帧tsx
import {parseMedia ,OnAudioTrack } from '@remotion/media-parser';constonAudioTrack :OnAudioTrack = (track ) => {console .log (track );return (sample ) => {console .log (newEncodedAudioChunk (sample ))};};
signal?
一个 AbortSignal
实例。
如果信号被中止,解析器将停止读取媒体并停止解码过程,并抛出错误。
参见
I'm ready to translate the Markdown content into Chinese. Please go ahead and paste the content for translation.