PHP スクリプトを使用して、ビデオ リクエストを配信する前に検証します。このスクリプトは、Safari と Chrome を使用するデスクトップで期待どおりに機能します。しかし、iOS では、壊れた再生ボタンが表示されます。
ビデオは iPhone/iPad 用に適切にエンコードされていると確信しています。直接アクセスすると期待どおりに動作するからです。
関連する PHP コード:
$file_name = 'test-video.mp4';
$file_size = (string)(filesize($file_name));
header('Content-Type: video/mp4');
header('Content-Length: '.$file_size);
readfile_chunked($file_name);
exit;
(readfile_chunked()
に似てreadfile()
いますが、非常に大きなファイルの場合は、PHP マニュアル ページのコメントに記載されています: http://php.net/manual/en/function.readfile.php。いずれにせよ、test-video.mp4
わずか 5 MB であり、これはメモリ制限よりも少ない — この場合、実際に法線に置き換えてreadfile()
、まったく同じ動作を生成できます。)
直接アクセスしたときに取得するヘッダーは次のtest-video.mp4
とおりです。
Accept-Ranges:bytes
Connection:Keep-Alive
Content-Length:5558749
Content-Type:video/mp4
Date:Sun, 27 Jun 2010 21:02:09 GMT
Etag:"1c04757-54d1dd-489944c5a6400"
Keep-Alive:timeout=10, max=30
Last-Modified:Tue, 22 Jun 2010 01:25:36 GMT
Server:Apache/2.2.15 (CentOS) mod_ssl/2.2.15 0.9.8l DAV/2 mod_auth_passthrough/2.1 FrontPage/5.0.2.2635
PHP スクリプトのヘッダーは次のとおりです。
Connection:Keep-Alive
Content-Disposition:inline; filename="test-video.mp4"
Content-Length:5558749
Content-Type:video/mp4
Date:Sun, 27 Jun 2010 21:03:32 GMT
Keep-Alive:timeout=10, max=15
Server:Apache/2.2.15 (CentOS) mod_ssl/2.2.15 0.9.8l DAV/2 mod_auth_passthrough/2.1 FrontPage/5.0.2.2635
X-Powered-By:PHP/5.2.13
私はヘッダーのさまざまな順列を試しましたが、それらを直接の要求からのものと正確に一致させても役に立ちませんでした。
iOS で、PHP を介して HTML5 ビデオの提供に成功した人はいますか?
[注: X-Sendfile を使用してみますが、サイトはアクセスが非常に制限された共有ホスト上にあります。]
編集: iOSはファイル拡張子に敏感である可能性があることを読んでいたので、MP4リクエストを元のPHPスクリプトに書き換えるRewriteRuleを設定しようとしましたが、どちらも役に立ちませんでした.