2012-06-18 2 views
5

Я не создаю доказательство концепции, которая показывает пользователю, что если они загружают одно и то же видео в формате .MP4 и OGG, сгенерированный тег видео (с использованием videojs) будет кросс-платформой.Как я могу показать недавно загруженное видео?

Я успешно создал файловый загрузчик с помощью конструктора и загрузил файлы до 512 МБ в папку «файлы» внутри решения, но я хотел бы знать, как обновить веб-страницу с помощью сгенерированного тега видео.

Это тег Я хотел бы изменить:

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

EDIT:

Я почти есть решение прямо сейчас. так или иначе это не соответствует правильному пути. Решение, которое я создал:

<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

Очевидно, что для резервной вспышки вы не можете. Однако он работает в браузерах, таких как 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

U нужно создайте URL-адрес, который может быть достигнут с помощью браузера, поэтому, например, если yr-файл загружен на c:\www\mysite\uploadfolder, вам нужно будет создать этот URL-адрес http://mysite/uploadfolder/movieFileName.ogg

+0

URL-адрес не был моей проблемой, я заполнил его правильным URL-адресом. Проблема лежит внутри сгенерированного объекта videojs, он не обновляется. –

 Смежные вопросы

  • Нет связанных вопросов^_^