我正在制作一个必须展示许多视频的网站。我用这段代码做到了这一点:
<video id="myVideo" width="432" height="240" controls autoplay loop>
<source src=@Model[1].VideoPath type="video/mp4">
Your browser does not support the video tag.
</video>
@Model [1] .VideoPath是视频的路径(这是使用ASP.NET-MVC)。在调试期间,这工作正常,具有相对路径(例如“../../ videosFolder / videoName.mp4”)。
现在要发布它不再工作了。如果我得到相对路径错误,我切换到绝对路径(“C:\ inetpub \ wwwroot ... \ videoName.mp4”)。
我确保视频存在,网站本身正在打印路径,这是正确的。应用程序池运行时具有完全权限的用户身份,并且inetpub转发的所有文件夹对任何人都可读...所以为什么现在不能正常工作?
更新: 我被要求上传“实时HTML”。我不确定我这样做是对的,但检查我得到的元素(再次,路径是正确的):
<video id="parentVideo" width="432" height="240" controls="" autoplay="" loop=""> <source src="C:\inetpub\wwwroot\correctPath\myVideo.mp4" type="video/mp4">
答案 0 :(得分:1)
"src="C:\inetpub\wwwroot\correctPath\myVideo.mp4"
是你的问题。由于安全限制,您无法访问最终用户本地计算机上的文件(即使您可以,您如何知道路径,以及如何假设文件存在?)。
此值应为指向视频可在线访问位置的http网址,
例如src="https://www.example.com/videos/myVideo.mp4"
(大概是在您的服务器上?)。
此原则适用于所有内容,而不仅仅是视频(例如,在网页中,您必须始终通过URL引用资源,而不是通过磁盘路径引用资源)。
您可能还需要在IIS中配置mime类型/文件扩展名设置,以确保服务器支持您所服务的所有文件类型。