Active Storage:在video_tag中显示视频

7
在一个 Rails 5.2 应用中,我想要通过 Active Storage 显示之前在 S3 上上传的视频。当我使用以下代码时:
<%= video_tag [@banner_video.video_mp4, @banner_video.video_webm] %>

我遇到了这个错误:

The asset "" is not present in the asset pipeline.

我在控制台中检查了一下,我的变量@banner_video正是我认为它应该的样子。


我猜你的问题是重复的。看看这个链接: https://dev59.com/HFYO5IYBdhLWcg3wU_6M - Afsanefda
不,该视频不在资产管道中,它托管在远程S3存储桶上。我可以轻松显示图像。 - Ruff9
哦,你是对的。 - Afsanefda
@Ruff9 你是如何将数据上传到云端的?你使用的是什么工具? - 7urkm3n
我已经设置了ActiveAdmin界面和一个带有文件类型字段的表单...我的应用程序通过Active Storage连接到我的S3存储桶,对于图像来说它非常好用。 - Ruff9
4个回答

3

我用了两种变量来使它工作

  1. <%= video_tag url_for(@banner_video.file), size: "150x120", controls: true %>

或者使用以下代码获取S3的url

  1. <%= video_tag @banner_video.file.service_url, size: "150x120", controls: true %>

2
我发现了一个不使用video_tag的解决方案,只需要进行一点小技巧。
<video>
  <source src=<%= rails_blob_path(@banner_video.video_mp4) %> type="video/mp4" />
  <source src=<%= rails_blob_path(@banner_video.video_webm) %> type="video/webm" />
</video>

这个正常工作,看起来 video_tag 无法处理远程源。


在不知道内容类型的情况下,不渲染视频可能被认为是至关重要的。 - t56k
1
这也可以正常工作: <%= video_tag rails_blob_path(session.video) %> - Metaphysiker
1
你能播放视频吗?我只能看到预览,也就是视频的第一帧。我想要它真正地播放... - uno
1
<%= video_tag rails_blob_path(session.video), controls: true %>。controls:true使您能够预览。 - Montells

2

1

如@metaphysiker所说,这也可以起作用:<%= video_tag rails_blob_path(session.video) %>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接