You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Reagent(ClojureScript)中[:video]无法嵌入视频的问题求助

问题原因与解决方案

核心问题是你在Reagent代码里使用了本地文件系统的绝对路径(C:\\Users\\user\\...),而Web应用通过shadow-cljs运行时是基于HTTP协议的本地开发服务器,浏览器的安全策略禁止HTTP环境下直接访问本地文件系统的绝对路径——这也是为什么纯HTML用file://协议打开能正常显示,但Reagent应用不行的原因。

解决步骤如下:

  1. 调整视频文件位置
    shadow-cljs默认的静态资源目录是项目根目录下的public文件夹,把testVideo.mp4移动到public目录下,比如创建public/videos子目录存放视频,最终路径为testProject/public/videos/testVideo.mp4。

  2. 修改Reagent代码的路径
    将:src的值改为相对于应用根路径的相对路径:

[:video {:muted true :loop true :autoplay true :height "240px" :width "320px"}
 [:source {:type "video/mp4"
           :src "/videos/testVideo.mp4"}]]

可选方案(不移动文件)

如果你不想移动视频文件,可以在shadow-cljs.edn中配置把src/main/resources目录设为静态资源目录:

:dev-http {8080 "public"
           :resource-root "src/main/resources"}

之后Reagent代码里的路径可以改为"/testVideo.mp4"即可访问原位置的视频文件。

另外确认下你的属性配置是正确的:autoplay配合muted符合现代浏览器自动播放的规则,其他属性也没问题。

内容的提问来源于stack exchange,提问作者Viktor Karsakov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 06:45:35