2012-01-04 14 views
1

ashxハンドラを使用してmp4ファイルを提供しようとしていますが、Iphoneでは動作しません。しかし、Safari PCでも動作します。iphoneでC#ashxハンドラが動作しないmp4ビデオを提供します。

私は、これは(ASHX)の仕事をしたい:

<video width="100%" height="auto" controls=""><source type="video/mp4" src="play.ashx"></source></video> 

の代わりに(MP4):ここで

<video width="100%" height="auto" controls=""><source type="video/mp4" src="play.mp4"></source></video> 

は私のコードです:ここでは

public void ProcessRequest(HttpContext context) 
    { 
     context.Response.ClearContent(); 
     context.Response.ClearHeaders(); 

     var length = new System.IO.FileInfo(context.Server.MapPath("~/big_buck_bunny.mp4")).Length; 

     context.Response.CacheControl = "Public"; 
     context.Response.AddHeader("Content-Length", length.ToString()); 

     context.Response.ContentType = "video/mp4"; 
     context.Response.WriteFile(context.Server.MapPath("~/big_buck_bunny.mp4")); 

     context.Response.Flush(); 
     context.Response.Close(); 

    } 

は、ファイルがあればありますダウンロードしたい:http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4

これをやらなければならない理由は、クライアントがビデオへのアクセスを制御したいからです。

フィドラー情報(唯一の違い):

要求のiPhone:

User-Agent: AppleCoreMedia/1.0.0.9A405 (iPhone; U; CPU OS 5_0_1 like Mac OS X; en_us) 
Accept: */* 
Range: bytes=0-1 
Accept-Encoding: identity 
Connection: keep-alive 

リクエストのSafariのWindows

User-Agent: QuickTime/7.7.1 (qtver=7.7.1;os=Windows NT 6.1Service Pack 1) 
Pragma: no-cache 

応答が同一である

+0

iOS SafariとWindows Safariの違いを調べるために、Fiddlerを使用しましたか? –

+0

どのようにアクセスを制御しようとしていますか? –

+0

@ p.campbell投稿にいくつかのフィドラー情報を追加しました。正確に何を探すべきか教えていただけますか? –

答えて

1

リクエストでiPhoneはRangeヘッダーを送信します。アップルのモバイルデバイス上でSafariブラウザが見つかると、それに応じてサーバーが応答する必要があります。

specs(パラグラフ14.35.2)とフィドラーの出力から、最初の2バイトのみを送信してから206で応答する必要があります。その後、追加のヘッダーが設定されたGETが返されます。

私はこの答えは保持している場合、私は確認できないので、iPhoneやiPad何が転がっていない持っている...あなたの携帯電話上とSafariのオプションから

1

後藤設定]アイコンは、プラグインを有効にしてください。また、ビデオがh264のベースラインにエンコードされていることを確認してください。

関連する問題