2012-06-18 7 views
5

私は、同じビデオを.MP4とOGGの両方の形式でアップロードすると、生成されたビデオタグ(videojsを使用)がクロスプラットフォームになることをユーザーに示す概念証明を作成することはできません。最近アップロードした動画を直接表示するにはどうすればよいですか?

私はデザイナを使用してファイルアップロードを作成し、ソリューション内のフォルダ "ファイル"に最大512MBのファイルをアップロードしましたが、生成されたビデオタグでWebページを更新する方法を知りたいと思います。

これは私が変更したいタグです:

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

とサーバ側で:私も私のweb.configファイルでこれを追加

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

<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

これはUがする必要があるリテラル

<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

ですブラウザで到達できるURLを作成します。たとえば、yrファイルをc:\www\mysite\uploadfolderにアップロードすると、このURLを作成する必要があります。http://mysite/uploadfolder/movieFileName.ogg

+0

URLは私の問題ではなく、正しいURLで埋めました。問題は生成されたvideojsオブジェクトの中にあり、更新されません。 –

関連する問題