3

基本的なアプリケーションを作成し、Azure にアップロードしました。ユーザーがリストから選択して、それぞれのビデオを表示できるように、ビデオを埋め込みたい。たとえば、映画を選んでその予告編を見るなどです。

MVC ソリューションに 2 つのフォルダーを作成しました。「/Posters」には各ビデオの背景として機能する .jpg ファイルが含まれ、「/Videos」には各ビデオのソースとして .mp4 ファイルが含まれます。

.cshtml スニペットは次のとおりです。

 <video controls="controls" poster="@Model.PosterPath" width="640" height="360">
    <source src="@Model.VideoPath" type="video/mp4" />

        <object type="application/x-shockwave-flash" data="http://releases.flowplayer.org/swf/flowplayer-3.2.1.swf" width="640" height="360">
            <param name="movie" value="http://releases.flowplayer.org/swf/flowplayer-3.2.1.swf" />
            <param name="allowFullScreen" value="true" />
            <param name="wmode" value="transparent" />
            <param name="flashVars" value="config={'playlist':['@Model.PosterUrl',{'url':'@Model.VideoUrl','autoPlay':false}]}" />
            <img alt="@Model.AltText" src="@Model.PosterPath" width="640" height="360" title="No video playback capabilities" />
        </object>
</video>

公開後、ビデオ要素が存在し、ポスターが正しく表示されますが、再生ボタンをクリックすると「ストリームが見つかりません」というエラーが表示されます。

次のように、VideoPath と PosterPath の値に相対パスを使用しています。

../../Videos/myvideo.mp4 

VideoUrl と PosterUrl の値は、':' と '/' の値を置き換えた絶対パスである必要があるため、'http://mywebsite.azurewebsites.net/Videos/myvideo.mp4' は次のように表示されます。

http%3A%2F%2Fmywebsite.azurewebsites.net%2FVideos%2Fmyvideo.mp4

パス (相対パスと絶対パス) が正しくない可能性があることは明らかです。しかし、ポスターは正しく表示されるので、別の理由があるのではないかと考えています。

ビデオが正しく公開されていることをテストする方法はありますか? これが非常に基本的な質問である場合はお詫びします。これは私の最初の Azure アプリケーションです :-)

ありがとう

4

2 に答える 2

11

動画はAzure Blob Storageに入れておいたほうがよいかもしれません。あなたが直面する問題の 1 つは、誰かがあなたのビデオをストリーミングするたびに、1 日 165 MB に制限されている Azure Web サイトの発信トラフィックに対してカウントされることです。

ビデオを Azure Blob Storage に保存すると、サイトへのすべてのトラフィックを発生させることなくAzure CDNを利用できるため、より高速でスケーリングしやすくなります。Azure Blob Storage のコストは引き続き支払う必要がありますが、おそらくそれがはるかに安価な方法です。

また、プロジェクトに巨大なメディア ファイルを保持する必要がないことも意味しますが、これがソース管理や展開に適しているとは思えません。

Silverlightでスムーズなストリーミングを行う方法と、HTML5 ビデオを動作させる方法に関するチュートリアルがあります。1 つの重要な注意事項として、ファイルを保存するときにコンテンツ タイプを設定してください。そうしないと、ファイルはダウンロードされ、ストリーミングされません。

HTML5 VideoJSを使用した例(上記のフラッシュ プレーヤーでも動作するはずです):

  1. Azure Portal で BLOB ストレージ アカウントを作成する
  2. 動画をアップロードします。コードまたはAzure Storage Explorerを使用します。ファイル「video/mp4」のコンテンツタイプを設定していることを確認してください
  3. VideoJS css ファイルとスクリプト ファイルを追加<video>し、Blob ストレージ ファイルを指す要素を作成します。

コード:

<link href="http://vjs.zencdn.net/c/video-js.css" rel="stylesheet">
<script src="http://vjs.zencdn.net/c/video.js"></script>
<video class="video-js vjs-default-skin" controls
       preload="auto" width="640" height="480"
       data-setup="{}">
    <source src="http://storageaccount.blob.core.windows.net/yourvideo.mp4" type='video/mp4'>
</video>

Blob Storage を使用するその他の利点の 1 つは、Shared Access Signaturesの使用です。これらを使用すると、ブロブをプライベートに保ち、指定された期間のみ有効な署名付き URL を生成できます。このようにして、アプリケーションのユーザーはビデオを表示できます。URL をコピーして再配布しようとすると、有効期限が切れて役に立たなくなります。これはダウンロードと配布を止めるものではなく、DRM の形式ではありません。

于 2013-01-05T02:04:38.097 に答える
-1

「~/Videos/myvideo.mp4」のようなモデルのリターン パスを作成し、ビューで を使用します@Url.Content(Model.VideoUrl)

ビデオが展開されている場合は、最初にソリューションを確認し、各ビデオの Compile プロパティが「コンテンツ」に設定されていることを確認してください。これにより、それらがパッケージと共に展開されることが保証されます。確認するには、 http://mywebsite.azurewebsites.net/Videos/myvideo.mp4を参照できる必要があります。また、これがクラウド サービスの場合は、インスタンスへのリモート アクセスと RDP を有効にして、ファイルがデプロイされたことを確認できます。それらは、\sitesroot\0\videos の下の E: または F: にあります。

于 2013-01-05T01:35:16.013 に答える