目录
“视频品牌”是什么意思?
跳到最后:这是品牌视频的外观
云如何使它成为可能?
动态调整文件格式和质量以减少文件大小
我们可以以许多不同的方式改变我们的图像!
有一个节点SDK可以使它更加人性化一些
用云转换视频
将两个视频与使用Cloudinary的自定义过渡相结合
使用文本叠加层将标题卡添加到视频中
提取一个简短的视频剪辑以用作标题卡背景
使用Cloudinary添加文本叠加层
建立一次视频品牌;到处使用它
下一步该怎么办
首页 web前端 css教程 视频的云技巧

视频的云技巧

Apr 01, 2025 am 12:32 AM

视频的云技巧

创建视频很耗时。制作精良的5分钟视频可能需要数小时才能计划,录制和编辑 - 这是在我们开始谈论与网站上所有其他视频一致的视频之前

当我们接受Jamstack Explorers项目(用于Web开发人员的视频驱动的教育资源)时,我们想找到质量和运输的正确平衡:在视频制作过程中我们可以自动化什么,以减少创建视频内容所需的时间和步骤数,而无需牺牲质量?

借助熟悉的帮助,我们能够在所有视频内容中提供一致的品牌方法,而无需为创建视频的人们添加一堆额外的编辑任务。而且,作为奖励,如果我们将来更新我们的品牌,我们可以一次更新整个网站的所有视频品牌,而无需视频编辑!

“视频品牌”是什么意思?

为了使Explorers网站上的每个视频都觉得这一切都合并在一起,我们在每个视频中都包含一些常见的文章:

  1. 标题场景
  2. 一个简短的介绍保险杠(视频剪辑),显示Jamstack Explorers品牌
  3. 如果这是任务中的最后一个视频,则可以归结为下一个视频的简短省略保险杠,或者显示“任务完成”的“任务”

跳到最后:这是品牌视频的外观

为了显示添加品牌的影响,以下是Jamstack Explorers的视频之一,没有任何品牌:

这个视频(以及本洪的这一涉及任务)非常出色!但是,它突然开始和结束了,我们对这段视频的居住地没有感觉。

我们与亚当·霍尔德(Adam Hald)合作,创建了品牌的视频资产,这些视频资产有助于使每个视频都有一个地位感。与所有应用的探险家品牌一起查看相同的视频:

我们得到了同样的出色内容,但是现在我们添加了一些额外的va-va-voom ,使这感觉就像是一个更大的故事的一部分。

在本文中,我们将介绍如何自动使用Cloudinary自动自定义每个视频。

云如何使它成为可能?

Cloudinary是一个基于云的资产交付网络,它为我们提供了一个强大的基于URL的API来操纵和转换媒体。它支持各种资产类型,但真正发光的是图像和视频。

要使用Cloudinary,请您获得一个免费帐户,然后上传您的资产。然后,该资产以云URL提供:

 https://res.cloudinary.com/netlify/image/upload/v1605632851/explorers/avatar.jpg
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^es
                              | | |
                              VVV
                      云(帐户)名称版本(可选)文件名
登录后复制

该URL指向原始图像,可用于视频的云技巧标签和其他标记中。

动态调整文件格式和质量以减少文件大小

如果我们在网站上使用此图像并希望提高我们的网站性能,我们可能会决定使用诸如WebP,Avif等下一代格式等等来减少此图像的大小。这些新格式要小得多,但并不受所有浏览器的支持,这通常意味着使用工具以不同的格式生成此图像的多个版本,然后使用 element或其他专用标记来提供现代选择,并为较旧浏览器的JPG退缩提供现代选择。

使用Cloudinary,我们要做的就是为URL添加一个转换:

 https://res.cloudinary.com/netlify/image/upload/q_auto,f_auto/v1605632851/explorers/avatar.jpg
                                                ^^^^^^^^^^^^^
                                                      |
                                                      v
                                    自动质量和格式转换
登录后复制

我们在浏览器中看到的是视觉上相同的:

通过将文件格式和质量设置设置为自动设置(F_AUTO,Q_AUTO),Cloudinary能够检测客户端支持哪些格式,并在合理的质量级别上提供最有效的格式。例如,在Chrome中,此图像从97.6KB JPG转换为15.4KB WebP,我们要做的就是在URL中添加几件事!

我们可以以许多不同的方式改变我们的图像!

我们可以进一步进行其他转换,包括调整大小(w_150 for“大小为150px宽”)和颜色效果(e_grayscalefor“应用灰度效应”):

 https://res.cloudinary.com/netlify/image/upload/q_auto,f_auto,w_150,e_grayscale/v1605632851/explorers/avatar.jpg
登录后复制

这只是可能的可能性的微小味道 - 请确保将Cloudinary Docs删除以获取更多示例!

有一个节点SDK可以使它更加人性化一些

对于更高级的转换,例如我们将要进入​​的内容,手工编写URL可能会很难阅读。我们最终使用了thecloudinary节点sdkto使我们能够添加评论并解释每个转换在做什么,并且随着我们维护和发展平台,这非常有帮助。

要安装它,请从YourConsole获取Cloudinary API密钥和秘密,然后使用NPM安装SDK:

 #创建一个新目录
Mkdir Cloudinary-Video

#进入新目录
CD Cloudinary-Video/

#初始化一个新节点项目
npm init -y

#安装云节点SDK
NPM安装云
登录后复制

接下来,使用YourCloud_nameand API凭据创建一个名为Index.jsand的新文件:

 const cloud = require('cloudinary')。v2;

// todo用自己的云凭证替换这些值
cloudinary.config({
  cloud_name:'your_cloud_name',
  api_key:'your_api_key',
  api_secret:'your_api_secret',
});
登录后复制

不要将API凭据提交给GitHub或在任何地方共享。使用环境变量来确保它们的安全!如果您不熟悉环境变量,Colby Fayock为使用环境变量写了一篇重要的文章。

接下来,我们可以使用稍微更可读的配置设置来创建与以前相同的转换:

 Cloudinary.uploader
  //第一个参数应该是公共ID(包括文件夹!)
  //我们想转换的图像
  。
    //这两个属性与URL的开头相匹配:
    // https://res.cloudinary.com/netlify/image/upload/ ...
    // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^因为
    resource_type:'image',
    类型:“上传”,

    //“急切”表示我们想提前进行这些转换以避免
    //第一次加载时间缓慢
    渴望的: [
      {
        fetch_format:'auto',
        质量:“自动”,
        宽度:150,
        效果:“灰度”,
      },,
    ],,

    //允许将此转换的图像缓存以避免重新运行相同的图像
    //一遍又一遍地转变
    覆盖:false,
  }))
  。然后((结果)=> {
    console.log(结果);
  });
登录后复制

让我们通过输入index.jsin运行此代码。输出看起来像这样:

 {
  ASSET_ID:'FCA4ABBA96FFDF70EF89498AA340AE4E',
  public_id:'探险家/avatar',
  版本:1605632851,
  version_id:'B8A923931AF20404E89D03852FF1BFF1',
  签名:'e7201C9AB36CB5B6A0545CEE4F5F8EE27FB7F99F',
  宽度:300,
  身高:300,
  格式:'jpg',
  resource_type:'image',
  Create_at:'2020-11-17T17:07:31Z',
  字节:97633,
  类型:“上传”,
  URL:'http://res.cloudinary.com/netlify/image/upload/v1605632851/explorers/avatar.jpg',
  secure_url:'https://res.cloudinary.com/netlify/image/upload/v1605632851/explorers/avatar.jpg',
  Access_mode:'public',
  渴望的: [
    {
      转换:'e_grayscale,f_auto,q_auto,w_150',
      宽度:150,
      身高:150,
      字节:6192,
      格式:'jpg',
      url:'http://res.cloudinary.com/netlify/image/upload/e_grayscale,f_auto,q_auto,w_150/v1605632851/explorers/avatar.jpg',
      secure_url:'https://res.cloudinary.com/netlify/image/upload/e_grayscale,f_auto,q_auto,w_150/v1605632851/explorers/avatar.jpg'
    }
  这是给出的
}
登录后复制

在TheeagerProperty下,我们的转换与完整的URL一起显示,以查看转换的图像。

虽然节点SDK可能对这样的直接转换而过于杀伤,但是当我们开始查看添加视频品牌所需的复杂转换时,它确实变得非常方便。

用云转换视频

为了在Jamstack Explorers中转换我们的视频,我们遵循相同的方法:每个视频都上传到Cloudinary,然后我们修改URL以调整大小,调整质量并插入标题卡和保险杠。

我们将要解决一些主要的转型类别,以添加品牌:

  1. 覆盖
  2. 过渡
  3. 文字叠加
  4. 剪接

让我们看一下这些类别中的每个类别,看看我们是否不能在Ben的视频中重新实现Jamstack Explorers品牌!让我们通过设置upindex.jsto转换我们的基本视频:

 Cloudinary.uploader
  。
    //这两个属性与URL的开头相匹配:
    // https://res.cloudinary.com/netlify/image/upload/ ...
    // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^因为
    resource_type:'视频',
   类型:“上传”,

    //“急切”表示我们想提前进行这些转换以避免
    //第一次加载时间缓慢
    渴望的: [
      {
        fetch_format:'auto',
        质量:“自动”,
        身高:360,
        宽度:640,
        作物:“填充”,//如果视频不同,请避免信箱
      },,
    ],,

    //允许将此转换的图像缓存以避免重新运行相同的图像
    //一遍又一遍地转变
    覆盖:false,
  }))
  。然后((结果)=> {
    console.log(结果);
  });
登录后复制

您可能已经注意到,我们正在使用一个名为“保险杠”的视频,而不是Ben的原始视频。这是由于我们将视频添加在一起时云订单的方式。我们将在下一节中添加Ben的视频!

将两个视频与使用Cloudinary的自定义过渡相结合

为了添加保险杠,我们需要在T​​heeagerarray中添加第二个变换“图层”,该变换添加了第二个视频作为覆盖层。

为此,我们使用theoverlaytransformation并将其设置为tovideo:publicId,其中PublicIdis资产的云公共ID和任何转换为​​colons(:)的slashes(/)。

我们还需要告诉Cloudinary如何在两个视频之间过渡,我们使用一种称为Luma Matte的特殊视频来进行,该视频可让我们用视频的黑色区域掩盖一个视频,并与白色区域进行第二个视频。这会导致风格化的交叉锻炼。

这是Luma Matte本身的样子:

视频和过渡都有自己的转换,这意味着我们需要将它们视为云转换中的不同“层”。这意味着将它们分配到单独的对象中,然后将其他对象添加到“应用”每一层中,这使我们可以调用该部分完成并继续为主视频添加更多转换。

为了告诉Cloudinary这是一个Luma Matte,而不是另一个视频,我们设置了FeffectType Totransition。

在索引中进行以下更改。

 const videobasetransformations = {
  fetch_format:'auto',
  质量:“自动”,
  身高:360,
  宽度:600,
  作物:“填充”,
}

Cloudinary.uploader
  。
    //这两个属性与URL的开头相匹配:
    // <https:></https:> ...
    //
    resource_type:'视频',
    类型:“上传”,

    //“急切”表示我们想提前进行这些转换以避免
    //第一次加载时间缓慢
    渴望的: [
      VideoBaseTransformations,
      {
        覆盖:“视频:探险家:LCA-07- lifecycle-hooks”,
        ... videobaseTransformations,
      },,
      {
        覆盖:“视频:探险家:过渡”,
        效果:“过渡”,
      },,
      {flags:'layer_apply'},//  {
    console.log(结果);
  });
登录后复制

我们需要在所有视频上使用相同的格式,质量和尺寸转换,因此我们将它们拉出了一个称为VideoBaseTrysformations的变量,然后添加了第二个对象以包含覆盖层。

如果我们使用Nonode index.js运行此此视频,那么您会回到这样的视频:

不错!这似乎已经是Jamstack Explorers网站的一部分,并且该过渡从普通保险杠增加到自定义视频中。

添加Enero保险杠的工作完全相同:我们需要为结束保险杠和过渡添加另一个覆盖层。我们不会在教程中显示此代码,但是如果您有兴趣,您可以在源代码中看到它。

使用文本叠加层将标题卡添加到视频中

要添加标题卡,有两个不同的步骤:

  1. 提取一个简短的视频剪辑以充当标题卡背景
  2. 添加带有视频标题的文本覆盖层

接下来的两个部分单独地穿过每个步骤,因此我们可以看到两者之间的区别。

提取一个简短的视频剪辑以用作标题卡背景

当亚当·霍尔德(Adam Hald)创建Explorers视频资产时,他包括了Abeautiful Intro Videothat在星空上打开的,非常适合标题卡。使用Cloudinary,我们可以抓住那颗星空的几秒钟,然后将其拼接到每个视频中作为标题卡!

InIndex.js,添加以下转换块:

 Cloudinary.uploader
  。
    //这两个属性与URL的开头相匹配:
    // https://res.cloudinary.com/netlify/image/upload/ ...
    //
    resource_type:'视频',
    类型:“上传”,

    //“急切”表示我们想提前进行这些转换以避免
    //第一次加载时间缓慢
    渴望的: [
      VideoBaseTransformations,
      {
        覆盖:“视频:探险家:LCA-07- lifecycle-hooks”,
        ... videobaseTransformations,
      },,
      {
        覆盖:“视频:探险家:过渡”,
        效果:“过渡”,
      },,
      {flags:'layer_apply'},//  {
    console.log(结果);
  });
登录后复制

使用TheSpliceFlag,我们告诉Cloudinary直接添加此视频而无需过渡。

在下一组转换中,我们添加了以前从未见过的三个转换:

  1. 我们setaudio_codectononeto从这一视频段中删除声音。
  2. 我们设置了_offsetto3,这意味着我们将仅获得视频的前3秒。
  3. 我们以25值添加了TheAccelerateFect,该值将视频降低了25%。

RunningNode Index.jswill现在给我们一个视频,从不到4秒的沉默,星空天空开始:

使用Cloudinary添加文本叠加层

我们的最后一步是添加文本覆盖层以显示视频标题!

文本覆盖层将SameOverlayProperty与其他叠加层一起使用,但是我们通过一个具有字体设置的对象。 Cloudinary支持各种字体 - 我还没有找到确定的列表,但是它似乎是大量的Google字体 - 如果您购买了使用自定义字体的许可证,则可以在文本Overlaysas中使用自定义字体,从而可以使用自定义字体。

 Cloudinary.uploader
  。
    //这两个属性与URL的开头相匹配:
    // <https:></https:> ...
    //
    resource_type:'视频',
    类型:“上传”,

    //“急切”表示我们想提前进行这些转换以避免
    //第一次加载时间缓慢
    渴望的: [
      VideoBaseTransformations,
      {
        覆盖:“视频:探险家:LCA-07- lifecycle-hooks”,
        ... videobaseTransformations,
      },,
      {
        覆盖:“视频:探险家:过渡”,
        效果:“过渡”,
      },,
      {flags:'layer_apply'},//  {
    console.log(结果);
  });
登录后复制

除了设置字体尺寸和对齐方式外,我们还应用了500px(默认为默认为中心)的宽度,以防止我们的标题文本粉碎到标题卡的侧面,并设置thecropvalue tofit,这将包装更长的标题。将thecolortowhitemakes设置为我们的文本在黑暗,星空背景下可见。

runnode index.jsto生成URL,我们将观看完全品牌的视频,包括标题卡和保险杠!

建立一次视频品牌;到处使用它

创建保险杠,过渡和标题卡是很多工作。创建高质量的视频内容也是很多工作。如果我们不得不手动编辑每个Jamstack Explorers视频来插入这些标题卡和保险杠,那么我们实际上不太可能做到这一点。

我们知道,让我们保持视频一致品牌的唯一现实方式是构造添加品牌的摩擦,而Cloudinary让我们完全自动化它。这意味着我们可以在没有任何手动步骤的情况下保持一致!

作为额外的奖励,这意味着,如果我们将来更新标题卡或保险杠,我们可以通过一个地方更改代码来更新所有视频的所有品牌。这对我们来说是一个巨大的解脱,因为我们知道探险家将随着时间的流逝而继续发展和发展。

下一步该怎么办

现在,您知道如何使用Cloudinary添加自定义品牌,这里有一些其他资源来帮助您继续学习。

  • 请参阅本教程的TheSource代码。
  • 请参阅“视频品牌”的Jamstack ExplorersSource代码。
  • 了解有关Cloudinary的视频转换API的更多信息。
  • 了解Web开发OnJamstack Explorers。
  • 了解如何使用Cloudinary来创建自定义社交媒体图像。
  • 观看Ben的完整任务,以了解一切如何融合在一起!

您还能使用Cloudinary自动化什么?通过自动化视频编辑工作流的重复部分来节省多少时间?我正是那种喜欢谈论这些东西的书呆子,所以请在Twitter上向我发送您的想法!

以上是视频的云技巧的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

VUE 3 VUE 3 Apr 02, 2025 pm 06:32 PM

它的出局!恭喜Vue团队完成了完成,我知道这是一项巨大的努力,而且很长时间。所有新文档也是如此。

使用Redwood.js和Fauna构建以太坊应用 使用Redwood.js和Fauna构建以太坊应用 Mar 28, 2025 am 09:18 AM

随着最近比特币价格超过20k美元的攀升,最近打破了3万美元,我认为值得深入研究创建以太坊

您可以从浏览器获得有效的CSS属性值吗? 您可以从浏览器获得有效的CSS属性值吗? Apr 02, 2025 pm 06:17 PM

我有人写了这个非常合法的问题。 Lea只是在博客上介绍了如何从浏览器中获得有效的CSS属性。那样的是这样。

带有粘性定位的堆叠卡和一点点的杂物 带有粘性定位的堆叠卡和一点点的杂物 Apr 03, 2025 am 10:30 AM

前几天,我发现了科里·金尼文(Corey Ginnivan)网站上的这一点,当您滚动时,彼此之间的卡片堆放集。

在CI/CD上有点 在CI/CD上有点 Apr 02, 2025 pm 06:21 PM

我说的“网站”比“移动应用程序”更合适,但我喜欢Max Lynch的框架:

在WordPress块编辑器中使用Markdown和本地化 在WordPress块编辑器中使用Markdown和本地化 Apr 02, 2025 am 04:27 AM

如果我们需要直接在WordPress编辑器中向用户显示文档,那么最佳方法是什么?

比较浏览器的响应式设计 比较浏览器的响应式设计 Apr 02, 2025 pm 06:25 PM

这些桌面应用程序中有许多目标是同时在不同的维度上显示您的网站。因此,例如,您可以写作

为什么Flex布局中的紫色斜线区域会被误认为是'溢出空间”? 为什么Flex布局中的紫色斜线区域会被误认为是'溢出空间”? Apr 05, 2025 pm 05:51 PM

关于Flex布局中紫色斜线区域的疑问在使用Flex布局时,你可能会遇到一些令人困惑的现象,比如在开发者工具(d...

See all articles