Tôi hiện đang cố gắng phân phối video MP4 để sử dụng trong video HTML5 (sử dụng video-js) thông qua tập lệnh PHP để kiểm soát quyền truy cập video. Sau một số nghiên cứu tôi có thể làm việc này, với sự giúp đỡ của stackoverflow article found here. Nếu tôi điều hướng đến tập lệnh PHP, tôi có thể xem video như thể tôi đang xem nó qua đường dẫn tuyệt đối của nó (ví dụ localhost/myvideo.mp4 thay vì localhost/myscript.php) trong Firefox, Safari và IE. Vấn đề của tôi là với Google Chrome, điều này chỉ đơn giản là hiển thị một màn hình bị bôi đen với một trình phát phương tiện nhỏ ở trung tâm và không làm gì cả.Phân phối video MP4 qua PHP không thành công trong Google Chrome
Tôi đã thử sử dụng viết lại nhanh như localhost/avideo.mp4 để định tuyến tới tập lệnh PHP, nhưng tiếc là điều này không thay đổi bất cứ điều gì.
Dưới đây là kịch bản của tôi:
if (is_file($uri)) {
header('Content-Type: video/mp4');
if (isset($_SERVER['HTTP_RANGE'])) {
$this->rangeDownload($uri);
exit;
} else {
header("Content-Length: ".filesize($uri));
$this->readfile_chunked($uri);
exit;
}
} else {
//error
}
Phương pháp rangeDownload đã được lấy trực tiếp từ phụ lục A của this link như đề xuất trong bài viết stackoverflow nói trên.
Bạn có thể gửi tất cả các thông tin tiêu đề bạn đang gửi? – ethrbunny
Loại nội dung, Phạm vi chấp nhận, Phạm vi nội dung, Nội dung dài, HTTP/1.1 206 Nội dung một phần. Các tiêu đề này được sử dụng trong trường hợp đầu tiên sử dụng rangeDownload, được sử dụng cho Chrome, mặc dù readfile_chunked sử dụng ít tiêu đề hơn (vẫn không hoạt động trong chrome). – AaronDS
Chỉ khác tôi có thể đề nghị là Content-Transfer-Encoding: binary. Im có thể truyền âm thanh qua PHP cho tất cả các trình duyệt bằng cách sử dụng combo này. – ethrbunny