2015年1月3日 星期六

[HTML5] 撥放MP4

前一陣子忽然想起之前去上的HTML5 課程,HTML5 可以撥放影片格式如下 ;











資料來源W3Schools


我們要撥放一個Mp4檔案的話,最直接的方式是在<Body>....</Body> 中放了一個

<video> Element


並指定source 來源。


<video width="480" height="320" controls>
  <source src="movie.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>


你會看到如下的結果














video element 中的width指的是播放畫面的寬度,height是高度。

假如你的影片是1920 x 1080 , 當指定width及height後,就會將影片

畫面縮放至480 x 320 ,而不是截到某一區塊而以,當然如果你不指定width及height,

影片有多大,撥放區塊就會放到多大。

controls 表示要顯示控制工具列,如果沒有打這個,只會有撥放的區域而以。

結果如下:














Your browser does not support the video tag.
如果您的瀏覽器不支援HTML5 或是video element 則會看到這個。
下圖是IE 6 執行結果。



























今天我要實作一個可以選置檔案來撥放的HTML5網頁,我必須另外實作一個
檔案選擇器,其實也是用一個<input> tag 就可以達成。


 <input type="file" id="files" name="files" accept="video/*"/>  

結果如下圖,會出現一個檔案選擇器 ,不過每一種瀏覽器出現的場子會不太一樣。下面這個是chrome的。






IE 6 會長這樣





I
E 11 長這樣






FireFox 長這個樣子




accept="video/*"/


其實是一種檔案過濾器,只能選擇video 類型的檔案,不加就可以任意選擇所有類型的檔案,但不一定能播放就是了。


當你點下瀏覽(選擇檔案) ,會跳出檔案選擇對話框。





選擇檔案完成後會顯示剛才所選的檔案。






選擇檔的功能到這裡算完成50%了,接下來是當我選擇好檔案後要如果把它指定給video撥放,必須透過javaScript寫一個fucnction來實作這段功能。


  <script type="text/javascript">  
       function handleFileSelect(evt) {  
         var files = evt.target.files; // FileList object  
         var file = files[0];//First File in FileList object  
         var video = document.getElementById('myVideo');  
         var myURL = window.URL || window.webkitURL;          
         var fileURL = myURL.createObjectURL(file);  
         video.src = fileURL;  
       }  


一步步來解釋每一行程式碼。


 var files = evt.target.files;  

當選擇完畢檔案後,取得所選擇的檔案清單。(input可以設定成多選)

  var file = files[0];  

取得所選取的第一個檔案,實際上我們沒有設定多選,所以只能選擇一個檔案。

 var video = document.getElementById('myVideo');   

以video的id 取得video element

 var myURL = window.URL || window.webkitURL    

這行是用來取得URL物件,判定瀏覽器是否要使用prefixed ,chrome必須用window.webkitURL ,firefox則使用window.URL  , 這也寫是為了相容於多種瀏覽器。

 var fileURL = myURL.createObjectURL(file);   

我們要撥放檔案,必須要把它轉換成URL的格式。

 video.src = fileURL;   

指定video 的src (相當於在source 中指定src)。

將input設定一個change事件(選擇的檔案改變後要執行的function)

  function init()  
       {  
         document.getElementById('files').addEventListener('change', handleFileSelect, false);  
       }  

記得在 body 中寫一個事件在網頁載入後去執行init註冊input的change事件。
 onload="init()"  



最後是完整程式碼

 <html>  
   <head>  
     <title>Html5 Mp4</title>  
     <meta charset="UTF-8">  
     <meta name="viewport" content="width=device-width, initial-scale=1.0">  
     <script type="text/javascript">  
       function handleFileSelect(evt) {  
         var files = evt.target.files; // FileList object  
         var file = files[0];//First File in FileList object  
         var video = document.getElementById('myVideo');  
         var myURL = window.URL || window.webkitURL;                       
         var fileURL = myURL.createObjectURL(file);  
         video.src = fileURL;        
       }  
       function init()  
       {  
         document.getElementById('files').addEventListener('change', handleFileSelect, false);  
       }  
     </script>  
   </head>  
   <body onload="init()">  
     <input type="file" id="files" name="files" accept="video/*" />  
     <br>  
     <br>  
     <video id="myVideo" src="" autoplay controls width="480" height="320" >  
       <p>Your browser does not support H.264/MP4.</p>  
     </video>      
   </body>  
 </html>  

執行結果


















當然你也可以按下控制列上的全螢幕鍵享受全螢幕撥放

沒有留言:

張貼留言