2

Web サイトの仮想 URL からビデオを再生するのに苦労しています。実際のファイルは Web アクセス可能なルートの下のどこにもないため、ビデオに直接リンクすることはできません。また、仮想パスは実際には、追加のアクセス許可チェックなどに使用される HTTP ハンドラー (ASP.Net "ASHX") です。

私はビデオ アクセスを設定しようとしていました (JWPlayer を使用しましたが、その時点までには到達しませんでした)。最初に使用した ASHX ハンドラーは、HTTP ヘッダーを使用してファイルをダウンロードとして送信するだけでした。content-disposition: attachment; filename=example.mp4

ブラウザー (Chrome 20.0.1132.57) の動作を、直接リンクの .mp4 ファイルと仮想リンクのブラウジングで比較したところ、直接リンクは小さな埋め込みビデオ プレーヤーで開くことに気付きましたが、仮想リンクのみが表示されます。ファイルをダウンロードします。

HTTP ヘッダーの違いを (Fiddler を使用して) キャプチャし、ビデオ用の特別な ASHX を作成しようとしましたが (失敗しました)、IIS とまったく同じ応答を送信します (mp4 の特定の構成はなく、MIME タイプさえもありません)。 )。すべてのヘッダーをエミュレートしたとしても(少なくとも、私の理解の範囲内で)、直接リンクからのように仮想URLからビデオを開くようにchromeを取得できないようです。

Content-Type & Content-Lengthヘッダーを使用して権利を送信しようとしましたが、最初のリクエストにヘッダーがない場合やヘッダーに含まれてAccept-Ranges & Content-Rangeいない場合でも、2 フェーズのリクエストをエミュレートしようとしました (最初の応答で 1 バイトのみを送信するか、ビデオ全体を送信することも試みました)。両方の応答で)。(これらの値がすべて「正しい」と言うときは、Fiddler でキャプチャした動作中の応答と同じであったことを意味します...)video/mp4*/*Accept

ブラウザがファイルをビデオとして扱うようになった原因を誰か説明できますか? 指定/省略が必要なヘッダーは何ですか? (もちろん省略しcontent-disposition: attachmentますが…)

4

1 に答える 1

2

主な問題は、JWPlayer の埋め込みコードに関係していたことが判明しました。

動画を指している URL に、認識された動画拡張子が含まれていない場合 - プレーヤーは何をすべきかわかりません - そのため、明示的な定義が必要です。

JWPlayer の機能する埋め込みコードを次に示します ( の明示的な指定に注意してください'provider':'video') 。

<video id="jwplayer_placeholder"
       src="http://localhost/mysite/SecuredFile.ashx?File=1234"
       height="270"
       width="480">
</video>
<script type="text/javascript">


  jwplayer("jwplayer_placeholder").setup(                                                       
  {
     modes:
     [
         { type: "flash", src: http://localhost/mysite/jwplayer/player.swf" },
         { type: 'html5' },
         { type: 'download' }
     ],
     'provider':'video'
   });
</script>

これが誰かに役立つことを願っています...

于 2012-11-08T16:07:51.943 に答える