2012-06-18 29 views
5

我wan't創造概念驗證,顯示該用戶,如果他們上傳都.MP4和OGG格式的相同視頻,生成的視頻標籤(使用videojs)將是跨平臺的。如何直接顯示最近上傳的視頻?

我已成功創建使用設計一個fileuploader並上傳文件最大512MB,文件夾「文件」的解決方案裏面,但我想知道如何與生成的視頻標籤更新網頁。

這是我想改變標籤:

<video id="example_video_1" class="video-js vjs-default-skin" 
     controls preload="auto" width="640" height="264" 
     poster="http://video-js.zencoder.com/oceans-clip.png" 
     data-setup='{"example_option":true}'> 
    <source id="mp4" src="http://video-js.zencoder.com/oceans-clip.mp4" type='video/mp4' /> 
    <source id="webm" src="http://video-js.zencoder.com/oceans-clip.webm" type='video/webm' /> 
    <source id="ogg" src="http://video-js.zencoder.com/oceans-clip.ogv" type='video/ogg' /> 
</video> 

我保存方法:

protected void btnUpload_Click(object sender, EventArgs e){  
      //check to make sure a file is selected  
      if (FileUpload1.HasFile) { 
       //create the path to save the file to   
       string fileName = Path.Combine(Server.MapPath("~/Files"), FileUpload1.FileName); 
       //save the file to our local path 
       FileUpload1.SaveAs(fileName);  
      } 
     } 

編輯:

我幾乎都解決了。不知何故,它沒有得到正確的道路。該解決方案我創建:

<script type="text/javascript"> 
    var _strSource = '<ASP:LITERAL runat="server" id="litSource" />'; 
    window.onload = function() 
    { 
     if (_strSource != "") { 
      alert(_strSource); 
      var video = document.getElementById('objVideo'); 
      var sources = video.getElementsByTagName('source'); 
      alert(sources[0].src); 
      sources[0].src = _strSource; 
      video.load(); 
      video.play(); 
     } 
    } 
</script> 

和服務器端:

protected void btnUpload_Click(object sender, EventArgs e){ 
    //check to make sure a file is selected  
    if (FileUpload1.HasFile) { 
     //create the path to save the file to   
     string fileName = Path.Combine(Server.MapPath("/Files"), FileUpload1.FileName); 
     //save the file to our local path 
     FileUpload1.SaveAs(fileName); 
     this.litSource.Text = fileName.Replace("\\", "\\\\"); 
    } 
} 

我也是在我的web.config中添加此:

<staticContent> 
    <mimeMap fileExtension=".mp4" mimeType="video/mp4" /> 
    <mimeMap fileExtension=".ogg" mimeType="video/ogg" /> 
    <mimeMap fileExtension=".webm" mimeType="video/webm" /> 
    <mimeMap fileExtension=".m4v" mimeType="video/m4v" /> 
</staticContent> 

現在改變路徑(以我的情況)C:\ Projects \ FileUploadTest \ FileUploadTest \ Files \ c4b3ae2189ea.ogg。這是文件上傳到的實際路徑,但瀏覽器無法到達此路徑。有沒有人有一個想法如何實現這一目標?

+0

我認爲這是獲得緩存的閃回回退。即使我將瀏覽器設置爲不緩存任何內容,它似乎仍然如此。關閉瀏覽器並重新打開它是解決方法,但是有誰知道我是否可以重置Flash緩存? –

+0

注意:它可以在Chrome上運行(使用Chrome瀏覽器,您不會收到Flash後備) –

回答

0

顯然,對於Flash後備,你不能。它在Chrome等瀏覽器中工作。關於Flash在所有瀏覽器中被棄用;)。

0

這是通過添加文字

<video id="example_video_1" class="video-js vjs-default-skin" controls preload="auto" width="640" height="264" poster="http://video-js.zencoder.com/oceans-clip.png" data-setup='{"example_option":true}'> 
    <asp:Literal ID="ltSources" runat="server"></asp:Literal> 
</video> 

,並在你的按鈕事件

protected void Button1_Click(object sender, EventArgs e) 
    { 
     StringBuilder sb = new StringBuilder(); 
     string mp4Url = "http://video-js.zencoder.com/oceans-clip.mp4"; 
     string webmUrl = "http://video-js.zencoder.com/oceans-clip.webm"; 
     string oggUrl = "http://video-js.zencoder.com/oceans-clip.ogv"; 

     sb.AppendFormat("<source id=\"mp4\" src=\"{0}\" type='video/mp4' />", mp4Url); 
     sb.AppendFormat("<source id=\"webm\" src=\"{0}\" type='video/webm' />", webmUrl); 
     sb.AppendFormat("<source id=\"ogg\" src=\"{0}\" type='video/ogg' />", oggUrl); 

     ltSources.Text = sb.ToString(); 
    } 

一個簡單的方法,最好的是讓用戶控制了它

+0

感謝您的回覆。 我試過你的解決方案,但我無法使它工作。首先,我想我可能需要在上傳視頻文件後調用一些videojs函數,但稍後在檢查元素後,我看不到任何變化。 我錯過了什麼嗎? –

1

ü需要創建一個可以用瀏覽器來達到網址,因此,例如,如果年文件上傳至c:\www\mysite\uploadfolder你需要創建這個網址http://mysite/uploadfolder/movieFileName.ogg

+0

該網址不是我的問題,我填充了正確的網址。問題出現在生成的videojs對象中,它不會被更新。 –

相關問題