回答:
違いは、定義されたコンテンツの長さを持つ静的ファイルと、shoutcastストリームまたはファイルでコンテンツの長さを提供しなかったサーバーである必要があります。
プレーヤーがファイルの大きさを知らない場合、メタデータ(特に曲の長さ)を収集するための最後を取得できず、シークのためにスクラバーを提示できません。
[編集]
cURLヘッダー出力:
$ curl -I "http://demo.ekklesia360.com/judas-and-pilate.mp3"
HTTP/1.1 200 OK
Date: Tue, 29 Mar 2011 21:59:15 GMT
Server: Apache/2.2.3 (Red Hat)
Last-Modified: Tue, 29 Mar 2011 16:25:33 GMT
ETag: "8b30001-ab4caa-49fa182643940"
Accept-Ranges: bytes
Content-Length: 11226282
Connection: close
Content-Type: audio/mpeg
$ curl -I "http://flex.ekk360.com/judas-and-pilate.mp3"
HTTP/1.1 200 OK
Server: Apache/2.2
Content-Type: audio/mpeg
Last-Modified: Tue, 29 Mar 2011 16:27:10 GMT
Content-Length: 11226282
Date: Tue, 29 Mar 2011 21:59:20 GMT
Age: 0
Connection: keep-alive
Via: 1.1 varnish 172.17.0.138
後者のファイル(フレックス経由)で、「Accept-Ranges」の不足と「Connection」タイプの「keep-alive」に気付きました。
これはそれを教えてくれます。
(1)Safari(/ QuickTime?)は、ID3データを読み取るために、ファイルの最後のバイト範囲要求を発行しない可能性が高い、または;
(2)「接続:キープアライブ」とは、新しいデータがパイプを通過する可能性があることを意味するため、スクラバーはありません。
Rackspace Cloud Sitesサポートが提供する回答は次のとおりです。
サーバーはメディアファイルをストリーミングできないため、mp3などのメディアファイルを開くと、ブラウザーまたはデバイス内でプログレッシブダウンロードと呼ばれる方法を使用して再生されます。次の記事では、プログレッシブダウンロードについて説明しています。http: //en.wikipedia.org/wiki/Progressive_download
基本的に、メディアプレーヤーはファイルを最初から最後までダウンロードし、ダウンロードしたファイルの一部を再生できます。iOSデバイスは、他の多くのモバイルデバイスと同様に、メモリが制限されているため、内部バッファーがいっぱいになった後にファイルのダウンロードを停止し、使用可能な貴重なRAMを節約します。ダウンロードは停止しますが、デバイスはこれまでにダウンロードしたメディアファイルの一部を再生し続けます。デバイスがダウンロードされたデータの終わりに近づくと、再生が中断されないように、メディアファイルのダウンロードを再開するために新しいHTTP要求が送信されます。新しいデータのダウンロードが再開されると、バッファがいっぱいになるとデバイスが一時停止してサイクルが再び開始されます。
このファイルの場合、このファイルのHTTP応答のヘッダー内に「Accept-Ranges:bytes」が存在しないことからわかるように、システム内のメディアファイルではファイルダウンロードの再開がサポートされていないため、再開ステップは失敗します:
HTTP/1.1 200 OK Server: Apache/2.2 Content-Type: audio/mpeg Last-Modified: Tue, 29 Mar 2011 16:27:10 GMT Content-Length: 11226282 Date: Tue, 29 Mar 2011 22:00:33 GMT X-Varnish: 1663119465 1663112299 Age: 73 Connection: keep-alive Via: 1.1 varnish 172.17.0.138 X-Cache: HIT
「Accept-Ranges:bytes」の詳細については、セクション14.5を参照してください。http: //www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
このHTTP要求はApacheによって処理されず、Media Acceleratorクラスター内のキャッシングVarnishサーバーを介して処理されるため、このHTTP要求ではファイルの再開はサポートされていません。ファイルの再開は、Apacheによって本質的にサポートされています。Varnishサーバーによってシステム内にキャッシュされたファイルのリスト、およびMedia Acceleratorの詳細については、http://cloudsites.rackspacecloud.com/index.php/What_is_the_Media_Accelerator_(MA)%3Fをご覧 ください。
HTTP要求がこれらのファイル拡張子のいずれかで終了する場合、HTTP要求はMedia Acceleratorにのみルーティングされます。クエリ文字列がURLの最後に追加された場合、またはURLが別のファイル拡張子に対して作成された場合、次の2つのヘッダーセットからわかるように、HTTP要求はApacheによって処理されます。
$ curl -I 'http://flex.ekk360.com/judas-and-pilate.mp3?1' HTTP/1.1 200 OK Server: Apache/2.2 Content-Type: audio/mpeg Date: Tue, 29 Mar 2011 21:41:56 GMT Accept-Ranges: bytes Connection: Keep-Alive Set-Cookie: X-Mapping-hpadogcb=018693E96D995C67FDE4A82FC7761170; path=/ Last-Modified: Tue, 29 Mar 2011 16:27:10 GMT Content-Length: 11226282 $ curl -I 'http://flex.ekk360.com/judas-and-pilate.mp_' HTTP/1.1 404 Not Found Server: Apache/2.2 Content-Type: text/html; charset=iso-8859-1 Date: Tue, 29 Mar 2011 22:12:29 GMT Transfer-Encoding: chunked Connection: Keep-Alive Set-Cookie: X-Mapping-hpadogcb=381D7664F27DBFFB6452A51D70DEDB28; path=/
このファイルをサーバーから適切にストリーミングするには、デバイスで「http://flex.ekk360.com/judas-and-pilate.mp3?1」などのURLを使用することにより、Media Acceleratorをバイパスする必要がありますまたは、ファイルの名前を変更し、カスタムmimeタイプをサイトに追加して、デバイスがメディアプレーヤーでファイルを開くようにします。別の方法は、Cloud FilesやAmazon S3などのCDNを介してファイルをホストすることです。