Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用HTML5视频标签播放本地(硬盘)视频文件?_Html_Video_Html5 Video_Offline - Fatal编程技术网

使用HTML5视频标签播放本地(硬盘)视频文件?

使用HTML5视频标签播放本地(硬盘)视频文件?,html,video,html5-video,offline,Html,Video,Html5 Video,Offline,我想实现以下目标 <video src="file:///Users/username/folder/video.webm"> </video> 其目的是用户能够从其硬盘中选择文件 当然,不上传的原因是传输成本和存储配额。没有理由保存该文件 有可能吗?只有当HTML文件也从本地用户的硬盘加载了文件协议时,这才有可能 如果HTML页面由服务器上的HTTP提供服务,则无法通过使用file://协议在src属性中指定任何本地文件来访问它们,因为这意味着您可以访问用户计算机

我想实现以下目标

<video src="file:///Users/username/folder/video.webm">
</video>

其目的是用户能够从其硬盘中选择文件

当然,不上传的原因是传输成本和存储配额。没有理由保存该文件


有可能吗?

只有当HTML文件也从本地用户的硬盘加载了
文件
协议时,这才有可能

如果HTML页面由服务器上的HTTP提供服务,则无法通过使用
file://
协议在
src
属性中指定任何本地文件来访问它们,因为这意味着您可以访问用户计算机上的任何文件,而用户不知道这会带来巨大的安全风险


正如Dimitar Bonev所说,如果用户自己使用文件选择器选择文件,则可以访问该文件。如果没有这一步,所有浏览器都会有理由禁止它。因此,虽然他的答案可能对许多人有用,但它放宽了原始问题中代码的要求。

可以播放本地视频文件

<input type="file" accept="video/*"/>
<video controls autoplay></video>
视频,
输入{
显示:块;
}
输入{
宽度:100%;
}
.info{
背景色:浅绿色;
}
.错误{
背景色:红色;
颜色:白色;
}
HTML5本地视频文件播放器示例

不久前遇到了这个问题。 由于安全设置,网站无法访问本地PC上的视频文件(确实可以理解) 我能绕过它的唯一方法是在本地PC(server2Go)上运行一个web服务器,并且从web上对视频文件的所有引用都指向localhost/video.mp4

<div id="videoDiv">
     <video id="video" src="http://127.0.0.1:4001/videos/<?php $videoFileName?>" width="70%" controls>
    </div>
<!--End videoDiv-->


我尽量简化迪米特尔·博涅夫的答案

<html>
<head>
<title>HTML5 local video file player example</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
<h1>HTML5 local video file player example</h1>
<input type="file" accept="video/*"><br>
<video controls></video>
<script type="text/javascript">
 (function localFileVideoPlayer() {
   'use strict'
   var playSelectedFile = function(event) {
   var file = this.files[0]
   var URL = window.URL || window.webkitURL 
   var fileURL = URL.createObjectURL(file)
   var videoNode = document.querySelector('video')
   videoNode.src = fileURL
   }
  var inputNode = document.querySelector('input')
  inputNode.addEventListener('change', playSelectedFile, false)
 })()
</script>
<p>I hereby signed confess solemnly that I have no idea what this code does. But thanks to God and Dimitar Bonev that it works. 
<p>Firefox Lubuntu 18.03
<p>Simplified: `http://jsfiddle.net/dsbonev/cCCZ2/` `https://stackoverflow.com/users/691308/dimitar-bonev`
</body>
</html>

HTML5本地视频文件播放器示例
HTML5本地视频文件播放器示例

(函数localFileVideoPlayer(){ “严格使用” var playSelectedFile=函数(事件){ var file=this.files[0] var URL=window.URL | | window.webkitURL var fileURL=URL.createObjectURL(文件) var videoNode=document.querySelector('video')) videoNode.src=文件URL } var inputNode=document.querySelector('input') inputNode.addEventListener('change',playSelectedFile,false) })() 我在此郑重签署并承认,我不知道该代码的作用。但多亏了上帝和迪米特尔·博涅夫,这一切才得以实现。 Firefox Lubuntu 18.03 简化:`http://jsfiddle.net/dsbonev/cCCZ2/` `https://stackoverflow.com/users/691308/dimitar-bonev`
它肯定不能用于文件输入。它可能与HTML5 ondrop一起工作,但我认为你不能利用它来上传文件。你最好的选择可能是做一个Chrome扩展。这对我在mac上的Chrome很有用。不适用于safari 6.1书籍,比如safari存在已知问题:以及出色的解决方案,它也适用于Chrome for Windows。有没有人做过这样的工作,将适当的视频块分页进出,以避免大视频占用浏览器内存?这太棒了。我希望我能多投100票,因为我没有使用jQueryDimitrov Bonev的解决方案显示此解决方案是不正确的——你可以通过输入访问本地文件type=file。好吧,只有让用户先选择文件,他的解决方案才有效。您仍然无法在HTML源代码中命名文件的路径(如问题中所述)并以这种方式访问它。因此,他的解决方案在技术上是另一个问题。vlc播放器也可以播放计算机上的任何文件,但也存在安全风险。它可以将文件从我们的硬盘下载到他们的服务器上,而我们不知道他们是否愿意,不是吗?那么为什么没有安全风险呢?在最坏的情况下,如果用户允许浏览器播放文件,他们可以允许用户手动接受。因为在某些情况下,用户100%信任页面,因为用户与web创建者在同一家公司工作。如果您将文件复制到缓存位置,并将视频源的路径设置为该位置,它将播放。将文件复制到context.getExternalCacheDir().getAbsolutePath()。适合我。也可以使用用户计算机中的任何web服务器,如apache或mongooseDude,我爱你。这太棒了!使用Chromecast播放本地航班非常有效(如果您的浏览器支持播放)。我很乐意提供帮助。:-)事实上,这是一段疯狂的代码。