2012-10-09 10 views
5

私はテストサイトを少しセットアップしました。開発中のサイトで再生するHTML5ビデオを実装しようとしています。 jplayerを使用して、html5ビデオがサポートされていない場合はswfファイルに戻るようにします。クライアントがm4vをapacheからchromeにjplayerでストリームするときに閉じる

http://dev.johnhunt.com.au/これまで私が持っていたものです。私はビデオのためにhttp://www.jplayer.org/video/m4v/Big_Buck_Bunny_Trailer_480x270_h264aac.m4vを提供すれば正常に動作しますが、自分のサーバーでホストしても、再生を開始しません。

mimeタイプは間違いなく正しいです、video/m4v。チャールズプロキシは言う:

GET /Big_Buck_Bunny_Trailer_480x270_h264aac.m4v HTTP/1.1 
Host dev.johnhunt.com.au 
Cache-Control no-cache 
Accept-Encoding identity;q=1, *;q=0 
Pragma no-cache 
User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.79 Safari/537.4 
Accept */* 
Referer http://dev.johnhunt.com.au/ 
Accept-Language en-US,en;q=0.8 
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.3 
Cookie __utma=120066461.1007786402.1349773481.1349773481.1349786970.2; __utmb=120066461.1.10.1349786970; __utmc=120066461; __utmz=120066461.1349773481.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none) 
Range bytes=0- 

と応答:OKに見える

Some binary data (maybe 3 or 4kbytes long) 

Client closed connection before receiving entire response 

Infactはは、ここで全体の要求です。私は 'クライアント'は私のクロムブラウザだと仮定します..なぜそれはあきらめていますか?これをどうすれば解決できますか?

GET /video/m4v/Big_Buck_Bunny_Trailer_480x270_h264aac.m4v HTTP/1.1 
Host www.jplayer.org 
Cache-Control no-cache 
Accept-Encoding identity;q=1, *;q=0 
Pragma no-cache 
User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.79 Safari/537.4 
Accept */* 
Referer http://dev.johnhunt.com.au/ 
Accept-Language en-US,en;q=0.8 
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.3 
Cookie __utma=24821473.325705124.1349773077.1349773077.1349773077.1; __utmc=24821473; __utmz=24821473.1349773077.1.1.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided) 
Range bytes=0- 

応答::

Lots of binary data (very long.. working) 

私はグーグル:(上で何かを見つけることができないように、

私はjplayer.orgにM4Vファイルを使用する場合、これが要求され、私は怒っ駆動です乾杯、 ジョン。

+0

注、私はむしろないと思いオープンソースではないので、jwplayerを使用してください。 –

+0

追加:Chromeのデベロッパーツールのネットワークタブでビデオファイルに対する2つのリクエストがあり、最初のステータスは保留中です。2番目のステータスはキャンセル済みです。両方とも保留中ですが、キャンセルされたステータスは赤です。両方のサイズは13バイトで、2番目のサイズは551msです。 –

答えて

8

Chromeブラウザが「Range:bytes = 0-」リクエストを送信すると、「206 Partial Content」というレスポンスで応答しないでください。 Chromeでデータを正しく処理するには、「200 OK」ヘッダーを返送する必要があります。

これは仕様に合っているかどうかわかりませんが、Chromeが動作するようになり、他のブラウザを破壊するようには見えません。

+1

クロムはビデオを配信することができないが、他のもの(FirefoxとSafari)はそれを完璧にしている。 –

+1

ストリームをインターセプトしてステータスコードを変更するアプリを作成する代わりに、この応答ステータスをapacheで変更する方法がありますか? –

+1

答えがうまくありがとう、私は自分のHTTPサーバーをアンドロイドに書くのとまったく同じことに走っていました。実際に216の代わりに200を返すと、それを修正します! – Maks

0

おそらく、あなたはタグ付きのApacheを使用しています。

ApacheにMIMEタイプを追加しましたか?

AddTypeのビデオ/ MP4のMP4

AddTypeのビデオ/ MP4とM4V

またそのgzipのがメディアのための電源が切られて確認してください...それは、すでに圧縮されている...とJplayerをgzipはありません。 swf。

あなたはApacheの設定を投稿できますか?あなたが任意のストリーミングモジュールを使用していることは、このようなthis?

乾杯 ロビン

EDIT

Oともあなたがしたい場合がありますとしてApacheでバイトを受け入れる-の範囲です。 2つのリンクを目の当たりにして200を提供し、206の部分データを提供しています。

1

Chromeでこれを実行するだけで、Content-Rangeヘッダーが応答でサーバーによって設定されていることを確認する必要があるようです。エンティティ1234バイトの合計が含まれていることを仮定バイトコンテンツレンジ仕様値の

例、:http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.htmlから

 
     . The first 500 bytes: 
     bytes 0-499/1234 
     . The second 500 bytes: 
     bytes 500-999/1234 
     . All except for the first 500 bytes: 
     bytes 500-1233/1234 
     . The last 500 bytes: 
     bytes 734-1233/1234 
関連する問題