Angular cloudinary 自动播放具有响应宽度/高度的视频

Posted

技术标签:

【中文标题】Angular cloudinary 自动播放具有响应宽度/高度的视频【英文标题】:Angular cloudinary autoplay a video with responsive width/height 【发布时间】:2021-02-15 09:52:23 【问题描述】:

我有一个视频正在我的网站上播放,设置如下:

<video #video [muted]="true" playsinline autoplay loop id="video">
    <source [src]="section.backgroundVideo" type="video/mp4">
</video>

CSS 使它成为背景视频,如下所示:

#video 
  display: block;
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  min-width: 100%;
  min-height: 100%;

我正在使用 Angular Cloudinary 库,并且一直在努力让它发挥同样的作用。 我的 html 如下所示:

<cl-video public-id="Situ-Sizzler-Web-Clip-v05-01_auvu5o" fetch-format="auto" effect="volume:mute"
    flags="streaming_attachment" autoplay id="video" #video>

</cl-video>

有时它会播放,但大多数时候它只是加载海报图像而从不播放视频。 如果我删除 CSS 并将 html 更改为:

<cl-video public-id="Situ-Sizzler-Web-Clip-v05-01_auvu5o" fetch-format="auto" effect="volume:mute"
        flags="streaming_attachment" autoplay controls id="video" #video>

</cl-video>

我可以按下播放按钮,它就会播放。是不是我做错了什么?

另外,如果它可以根据分辨率调整大小,我会很高兴。有谁知道如何做到这一点?有了图片,你可以添加responsive,但我找不到任何视频。


我以为我找到了解决办法。我尝试手动将生成的 URL 添加到视频元素,并注意到它有类似的问题。 玩了一会儿,我发现了这个:

Tell whether video is loaded or not in javascript

然后导致我这样做:

Checking if a html5 video is ready

但最后我发现视频不允许自动播放,除非它被静音。我最初使用了属性autoplay muted,但正如你所见,我在我的 cl-video 中没有这样做(只是自动播放)。 所以我把我的 cl-video 改成了这样:

<cl-video public-id="Situ-Sizzler-Web-Clip-v05-01_auvu5o" fetch-format="auto" autoplay="true" muted="muted"
    id="video" #video>

</cl-video>

现在它的工作频率更高了,但有时还是不能自动播放.....

【问题讨论】:

您能分享一下只返回图片的请求的详细信息吗?我知道有时f_auto 会在未启用该功能的情况下返回视频图片,但您提到它有时会播放(所以可能不是这种情况)。另外,您是否尝试过删除 flags 参数?在这种情况下,我认为它不会按照您的意愿行事,因为它会导致下载发生。 你想要什么细节?不带flag我试试,我还以为是一边下载一边蒸视频播放 这是创建的网址:res.cloudinary.com/situ-live/video/upload/e_volume:mute,f_auto/… 如果您打开它,它实际上会立即播放。但由于某种原因它在 cl-video 中不起作用..... 【参考方案1】:

我似乎已经解决了这个问题。我尝试手动将生成的 URL 添加到视频元素,并注意到它有类似的问题。 玩了一会儿,我发现了这个:

Tell whether video is loaded or not in Javascript

然后导致我这样做:

Checking if a html5 video is ready

但最后我发现除非静音,否则视频将不允许自动播放。我最初使用了autoplay muted 属性,但正如你所见,我在我的 cl-video 中没有这样做(只是自动播放)。 所以我把我的 cl-video 改成了这样:

<cl-video public-id="Situ-Sizzler-Web-Clip-v05-01_auvu5o" fetch-format="auto" autoplay="true" muted="muted"
    id="video" #video>

</cl-video>

它有效。

【讨论】:

你知道这是否只发生在 Chrome 上,我知道 Chrome 有这种限制。但是很好,你把它提出来让别人找到。

以上是关于Angular cloudinary 自动播放具有响应宽度/高度的视频的主要内容,如果未能解决你的问题,请参考以下文章

Angular Cloudinary 使用重力

Angular:Cloudinary 错误 “消息”:“cloud_name 已禁用”

如何在 Angular 中动态嵌入来自 Cloudinary 的第三方 javascript 小部件?

Cloudinary 小部件,用于在表单中上传图像

使用变量时,Angular Cloudinary 宽度不起作用

Angular 2+ 组件内的 Chrome (Android) 视频自动播放