3

HTML5 タグを使用して表示されるビデオのコンテンツ保護を少しだけ提供しようとしています。

1 回限りのトークンを使用して C# .NET アプリケーションからビデオを提供することで、これを実行しようとしました。

ビデオの配信 (再生) には成功しましたが、プレーヤーのナビゲーション バーを使用できません。つまり、プログレス バーをクリックしてプレーヤーの現在の位置を変更することはできません。位置インジケータは、元の位置にスナップして再開します。また、一度動画を再生すると、ページをリロードしないと再生できません。

トークンの「1 回限り」の部分を無効にしました。したがって、問題になるのは使い捨てではありません。それは私がファイルを提供している方法と関係があります。同じ効果で、結果として C# File オブジェクトと FileStream オブジェクトも返そうとしました。

どんな提案も役に立ちます。

//ビューはこちら

@{ Guid aGuid;

string Guidstr;

aGuid = Guid.NewGuid();

Guidstr = aGuid.ToString();

Session[Guidstr] =@"Chrome_ImF.mp4" ;

}

///コントローラーコードはこちら

    public FileResult File(string id)
    {
        string moviename;
        moviename =  (Session[id] as string);
        moviename = @"C:\dev\asp\hercules\hercules\Content\samples\" + moviename;
        //Session.Remove(id);

        return File(moviename, "video/mp4");
    }



    public FileStreamResult Stream(string id)
    {
        string moviename;
        moviename = Session[ id ] as string;
       // Session.Remove(id);

        FileStream fs = new FileStream(moviename, FileMode.Open, FileAccess.Read);
        fs.Seek(0, SeekOrigin.Begin);
        return File(fs,"video/mp4");


    }
4

1 に答える 1

3

Codeplex (http://mvcresumingactions.codeplex.com/) の MVCResumingActions ライブラリを使用して、この問題を解決することになりました。

ビデオ プレーヤーは、ビデオの範囲固有のリクエストを作成できるようにしたいと考えているようです (リソースが完全にロードされる前に先にシークするため)。あなたの応答がその機能をサポートしていることを適切に示していない場合、すべてのナビゲーションは基本的にトーストされます.

そこで私はその道を歩み始め、このトピックに関する優れたリソースをいくつか見つけました。

http://dotnetslackers.com/articles/aspnet/Range-Specific-Requests-in-ASP-NET.aspx http://www.devx.com/dotnet/Article/22533/1954?pf=true

しかし、最も迅速で簡単な方法を提供したのは MVCResumingActions プロジェクトでした。

プロジェクト自体にはドキュメントがないため、ここに私がしたことがあります

1) IDE に NuGet がインストールされていない場合は、インストールします。

2) パッケージ管理コンソールからパッケージをインストールする

PM> インストール-パッケージ MVC.ResumingActionResults

3) コントローラーで、この using 句を追加します

using VikingErik.Mvc.ResumingActionResults;

4) 次に、アクション メソッドを定義します。

ResumingActionResults によって提供されるタイプの 1 つとして宣言します。提供されているすべてのタイプを使用する方法はわかりませんが、私の場合、ビデオをストリーミングしたかったので、「ResumingFileStreamResult」を選択しました

これが、自分の「StreamController.cs」ファイルにあるテスト アクションです。エリックに敬意を表して「バイキング」と名付けました

public ResumingFileStreamResult Viking (string file)

 {

  moviename = Server.MapPath("~/Content/samples/" + file);

  FileStream fs = new FileStream(moviename, FileMode.Open, FileAccess.Read);

  ResumingFileStreamResult fsr = new ResumingFileStreamResult(fs,"video/mp4");

  return fsr;

}

以下は、私がビューファイルに入れたものです:

<script src="http://api.html5media.info/1.1.5/html5media.min.js"></script>
 <video controls preload>
   <source src="/Stream/Viking?file=Chrome_ImF.mp4" />
 </video>

出来上がり、それは魅力のように機能しました。

于 2012-07-03T02:32:15.867 に答える