用javascript播放加载的文件

用javascript播放加载的文件,javascript,browser,audio,filelist,Javascript,Browser,Audio,Filelist,我正在尝试从用户加载一个文件,并希望使用javascript来播放它 文件加载正确,我可以通过FileListAPI查看名称、类型等来访问它 我不能做的是播放获得的文件。我试着去做 myFile.play(); 就像我总是处理加载的文件一样,但它不工作 有什么想法吗?你也需要FileReaderAPI(),你的浏览器需要支持HTML5audio标签 大概是这样的: <body> <input type='file' id='fileInput' />

我正在尝试从用户加载一个文件,并希望使用javascript来播放它

文件加载正确,我可以通过
FileList
API查看名称、类型等来访问它

我不能做的是播放获得的文件。我试着去做

myFile.play();
就像我总是处理加载的文件一样,但它不工作


有什么想法吗?

你也需要
FileReader
API(),你的浏览器需要支持HTML5
audio
标签

大概是这样的:

   <body>
       <input type='file' id='fileInput' />
       <audio id='player' />
       <script type='javascript'>
           var fileInput = document.getElementById("fileInput");
           var freader = new FileReader();

           freader.onload = function(e) { 
               document.getElementById('player').src = e.target.result; 
               document.getElementById('player').play(); 
           }

           fileInput.onchange = function(e) {
               var files = e.target.files;
               freader.readAsDataURL(files[0]);
           }

       </script>
   </body>

更多


我的答案基于解决方案如果您只想播放媒体内容,而不是使用FileReader,我建议您使用createObjectURL方法。因为它不创建包含文件内容的字符串,所以效率更高

只要做:

audio/video.src=window.URL.createObjectURL(myFile);
加载另一个媒体文件时,不要忘记撤消uri,以避免内存泄漏:

window.URL.revokeObjectURL(audio/video.src);