当前位置: 首页 > 科技观察

如何使用React制作视频和动画

时间:2023-03-15 19:32:36 科技观察

本文转载自微信公众号“TianTianUp”,作者小毅。转载本文请联系天天向上公众号。大家好,我是小艺。分享的内容是:如何使用ReactRemotion制作视频。如果你之前对视频感兴趣,可以参考这篇文章。TextRemotion是最近推出的库,可让您使用React创建视频和动态图形。作为Web开发人员,我发现它非常有趣,因为它为我们自己创建视频和动画打开了新的大门。它的官方网站:https://www.remotion.dev/简介来源:https://www.remotion.dev/正如我提到的,Remotion是最近推出的一个令人兴奋的库,它允许您使用您喜欢的网络技术,如HTML、CSS、JavaScript、TypeScript等来创建视频和动画。此外,您还可以利用您在编程、函数、算法和API方面的所有知识,为视频添加各种效果。作为一个基于React的库,Remotion能够最大限度地发挥Reacts的特性,例如可重用的组件、强大的组合和快速的重新加载。Remotion还附带一个名为RemotionPlayer的播放器,让您感觉像真正的视频编辑器,可以使用浏览器播放和查看您的视频。如何设置Remotion?创建一个新的Remotion项目非常简单。但是您应该首先安装两个依赖项。第一步:安装NodeJS和FFMPEG因为安装NodeJS很常见,所以我会重点安装FFMPEG。首先,您需要从他们的下载页面下载合适版本的FFMPEG。FFMPEG下载页面。然后将其解压缩到您选择的文件夹中,并在具有管理员权限的CMD中运行以下命令(在Windows中)以更新您的PATH变量。setx/MPATH"path\to\ffmpeg\bin;%PATH%"Step2:启动新工程安装完以上依赖后,只需要一条命令就可以初始化一个新的Remotion视频,可以使用yarn或者npm来实现它。yarncreatevideoornpminitvideo你已经成功初始化了你的第一个Remotion项目,你可以使用npmrunstart启动项目。默认Remotion项目的基础知识Remotion现在您已经启动了Remotion项目,您可以开始创建视频了。不过我觉得在此之前,如果对Remotion的基础知识有一定的了解就更好了。VideoPropertiesWidth、height、durationInFrames、fps是Remotion提供的视频属性。您可以在组件中使用这些属性来配置组件的像素大小、组件应播放的帧数以及每秒的帧数。从“remotion”导入{useVideoConfig};exportconstExampleVideo=()=>{const{fps,durationInFrames,width,height}=useVideoConfig();return(Thisvideois{durationInFrames/fps}secondslong.

);};推荐使用useVideoConfig来导出这些属性,就像上面的例子一样,这样你的组件就可以被复用。CompositionsCompositions也是Remotion中的一个组件,你可以使用上面的属性作为元数据。import{Composition}from'remotion';import{HelloReaders}from'./HelloReaders';exportconstRemotionVideo:React.FC=()=>{return(<>);}如果您查看项目中的Video.tsx文件,您将看到3个合成组件,每个组件都有元数据,包括视频属性。同时,这些组合也显示在RemotionPlayer的左上角。CompositionsListAnimationProperties当谈到视频时,动画是最重要的,Remotion让您可以自由配置一些令人惊叹的动画。例如,如果你需要一个简单的面部效果,你可以逐帧调整不透明度。constframe=useCurrentFrame();constopacity=frame>=20?1:(frame/20);return(HelloReaders!
)另外,Remotion有2个内置-in名为interpolate和spring的函数,您可以使用它们来创建更高级的动画。插值函数接受4个输入参数,包括输入值(主要是帧)、输入可以承受的范围值、你想将输入映射到的值范围,以及一个可选参数。Spring动画通过使动画更自然,让您的演示文稿更具创意。例如,下面的弹簧动画配置将为您的文本添加一个小的缩放效果。const{fps}=useVideoConfig();constscale=spring({fps,from:0,to:1,frame});return(WelcometoMyBlog)SpringanimationSequenceComponentRemotion中的Sequence组件主要完成两个任务。主要用于给视频中的元素分配不同的时间帧。它还允许您在保持元素之间关系的同时重用相同的组件。Sequence组件是一个高阶组件,可以容纳子组件。除此之外,它还接受3个道具,包括2个必需道具和1个可选道具。name:这是一个可选的道具。您分配的名称将出现在Remotion播放器的时间线上。如果您使用正确的命名模式,您将能够理解每个组件是如何连接的。RemotionPlayer的时间轴视图来自:这定义了该组件应出现在视频中的帧。durationInFrames:Sequence组件的帧长度。例如,下面的Sequence组件会在20帧后出现在视频中,并且会一直持续到结束,因为durationOnFrames是无限的。现在您对Remotion中的几个基本属性和组件有了基本的了解,我们可以开始创建您的Remotion的第一个视频。创建一个简单的视频正如您在上面的示例中看到的那样,我将创建一个简单的视频来显示我博客的徽标和欢迎,并带有一些动画。我将使用我们在文章开头创建的默认项目布局。第1步首先,我为视频中的3个元素创建了3个组件:Logo.tsx、Title.tsx和SubText.tsx。Logo.tsx文件:import{spring,useCurrentFrame,useVideoConfig}from'remotion';import{Img}from'remotion';importimagefrom'./logo.png'exportconstLogo:React.FC<{transitionStart:number;}>=({transitionStart})=>{constvideoConfig=useVideoConfig();constframe=useCurrentFrame();return(
);};Title.tsx文件:import{spring,useCurrentFrame,useVideoConfig}from'remotion';exportconstTitle:React.FC<{titleText:string;titleColor:string;}>=({titleText,titleColor})=>{constvideoConfig=useVideoConfig();constframe=useCurrentFrame();consttext=titleText.split('').map((text)=>`${text}`);返回({text.map((text,i)=>{return({text});})});};SubText.tsx文件:import{interpolate,useCurrentFrame}from'remotion';exportconstTitle:React.FC<{titleText:string;titleColor:string;}>=({titleText,titleColor})=>{constframe=useCurrentFrame();constopacity=interpolate(frame,[0,30],[0,1]);return(Followmeon{''}medium.com{''}formorearticles);};第2步然后,我将这3个组件导入到MyVideo.tsx中,并用Sequence组件包裹起来,为每个组件分配相关的时间帧。此外,我还向Subassembly传递了几个道具和动画。import{interpolate,Sequence,useCurrentFrame,useVideoConfig}from'remotion';import{Logo}from'./components/Logo';import{SubText}from'./components/SubText';import{Title}from'./components/Title';exportconstMyVideo:React.FC<{titleText:string;titleColor:string;}>=({titleText,titleColor})=>{constframe=useCurrentFrame();constvideoConfig=useVideoConfig();constopacity=interpolate(frame,[videoConfig.durationInFrames—25,videoConfig.durationInFrames15],[1,0],{extrapolateLeft:'clamp',extrapolateRight:'clamp',});consttransitionStart=0;return(
);};Step3最后,我把以上所有文件导入到Video.tsx中,并使用Composition组件传递相关元数据import{Composition}from'remotion';import{MyVideo}from'./MyVideo';import{Logo}from'./components/Logo';import{SubText}from'./components/SubText';exportconstRemotionVideo:React.FC=()=>{return(<>);};现在,您可以运行您的第一个Remotion视频。您可以使用npmrunstart在开发模式下查看它,或者使用npmrunbuild将其作为mp4文件查看。开发模式定稿视频结语Remotion虽然还很年轻,但已经具备了一些惊人的功能。它可能还达不到专业视频编辑器的质量。但我们绝对可以期待一些惊喜的到来。此外,Remotion还有参数化渲染、服务端渲染、数据抓取等开发者非常熟悉的特性。他们可以利用自己的经验充分利用该工具。最重要的是,对于那些正在寻找一种方法来创建供个人使用的小视频或动画的人来说,这是一个很好的选择。在我看来,我们可以使用Remotion以我们的Web开发知识来创建简单的视频和动画。但是当涉及到视频编辑功能时,还有很多需要改进和简化的地方。但是,我强烈建议您下载Remotion并尝试一下。这将是一种全新的体验。感谢您的阅读!!!