javascript - 通过输入类型 ="file"选择文件并将源文件附加到视频元素

标签 javascript html

我想要选择一个文件,然后单击按钮后,想要将该文件加载到视频元素中,该元素应该立即播放。 尝试通过 type="text" 输入文件是可行的,但这需要我输入文件的链接。我想要的是能够选择文件,就像通过资源管理器一样。 type="file" 允许我通过资源管理器选择文件,但之后我无法将文件附加到 video.src 中,因为 value 属性返回fakepath而不是真实路径。还有其他方法吗?

<html>
<head>
    <title>Using File For Streaming</title>
</head>

<body>
<input type="file" id="videoUrl"/>
<button onClick="play()">Play Video</button>
<video id="videoPlayer" height="400" width="400" autoplay controls muted></video>
    <script>
        function play() {
            var videoUrl = document.getElementById('videoUrl').value;
            alert(videoUrl);
            var videoPlayer = document.getElementById('videoPlayer');
            videoPlayer.src = videoUrl;
            videoPlayer.load();
            videoPlayer.play();
        }
    </script>
</body>
</html>

最佳答案

使用 URL.createObjectURL 方法,用您上传的input.files[0]喂养你的<source>src ,然后调用.load()你的方法<video> .

inp.onchange = function(){
  source.src = URL.createObjectURL(inp.files[0]);
  vid.load();
  // even if it's just a pointer to the real file here
  vid.onended = function(){
      URL.revokeObjectURL(vid.currentSrc);
    };
  }
<video id="vid" controls>
  <source id="source"/>
</video>
<input id="inp" type="file" accept="video/*">

关于javascript - 通过输入类型 ="file"选择文件并将源文件附加到视频元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42082211/

相关文章:

javascript - 如何用空格或逗号分割字符串?

javascript - 如何让这个冗长的 jQuery 变得优雅呢?

html - 浏览器中任何分辨率的完整背景图像大小

html - 网络字体仅适用于 Mac 的 Chrome 和 Safari,

javascript - 如何使用mongo shell加载多个js文件到数据库?

javascript - 使用 javascript 将数据从一个域发送到另一个域(我可以访问两个网页的 <head> )

javascript - Kendo TabStrip 内的 Kendo Grid 高度不受限制

html - 如何将父级的高度设置为自动减去像素?

java - 一种避免许多 servlet 的方法

javascript - 如何在使用 css-rule(-webkit-column-width :)) 拆分后获取 html 页面特定列的内容