2012-06-18 36 views
5

Tôi không muốn tạo bằng chứng khái niệm cho thấy người dùng rằng nếu họ tải lên cùng một video ở cả định dạng .MP4 và OGG, thẻ video được tạo (sử dụng videoj) sẽ là nền tảng chéo.Tôi làm cách nào để hiển thị trực tiếp video mới tải lên?

Tôi đã tạo thành công trình tải tệp lên bằng trình thiết kế và tải lên tệp lên tới 512MB, vào thư mục "tệp" bên trong giải pháp, nhưng tôi muốn biết cách cập nhật trang web bằng thẻ video được tạo.

Đây là thẻ tôi muốn thay đổi:

<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> 

tôi phương pháp tiết kiệm:

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);  
      } 
     } 

EDIT:

Tôi gần như có giải pháp bây giờ. bằng cách nào đó nó không có được con đường đúng. Các giải pháp tôi đã tạo:

<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> 

Và ở phía máy chủ:

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("\\", "\\\\"); 
    } 
} 

Tôi cũng đã thêm này trong web.config của tôi:

<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> 

Nó bây giờ thay đổi đường dẫn đến (trong trường hợp của tôi) C: \ Projects \ FileUploadTest \ FileUploadTest \ Files \ c4b3ae2189ea.ogg. Đây là đường dẫn thực tế nơi tệp được tải lên, nhưng trình duyệt không thể tiếp cận đường dẫn này. Có ai có một ý tưởng làm thế nào để đạt được điều này?

+0

Tôi nghĩ đó là dự phòng flash được lưu vào bộ nhớ cache. Ngay cả khi tôi đặt trình duyệt của mình để trình duyệt không lưu vào bộ nhớ cache, nó vẫn có vẻ như vậy. Đóng trình duyệt và mở lại nó là giải pháp thay thế nhưng có ai biết liệu tôi có thể đặt lại bộ nhớ cache Flash không? –

+0

Lưu ý: nó hoạt động trên Chrome (sử dụng Chrome, bạn không nhận được dự phòng Flash) –

Trả lời

0

Dường như cho dự phòng Flash mà bạn không thể. Nó hoạt động trong các trình duyệt như Chrome. Giới thiệu về thời gian Flash không được chấp nhận trong tất cả các trình duyệt;).

0

Đây là một cách đơn giản bằng cách thêm một chữ

<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> 

và nút sự kiện của bạn

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(); 
    } 

và tốt nhất là để thực hiện một điều khiển người dùng ra khỏi nó

+0

Cảm ơn bạn đã phản hồi. Tôi đã thử giải pháp của bạn, nhưng tôi không thể làm cho nó hoạt động. Đầu tiên tôi nghĩ rằng tôi có thể phải gọi một số chức năng videojs sau khi tôi tải lên một tập tin video, nhưng sau đó, sau khi kiểm tra các yếu tố, tôi thấy không có gì thay đổi. Tôi đã bỏ lỡ điều gì đó? –

1

U cần phải tạo url có thể truy cập bằng trình duyệt, ví dụ: nếu tệp yr được tải lên c:\www\mysite\uploadfolder, bạn sẽ phải tạo url này http://mysite/uploadfolder/movieFileName.ogg

+0

Url không phải là vấn đề của tôi, tôi đã điền url đó vào đúng url. Vấn đề nằm trong đối tượng videojs được tạo, nó không được cập nhật. –

Các vấn đề liên quan