2010-09-24 27 views
7

Tôi đang cố gắng xây dựng một ứng dụng trong đó tôi phải truyền các tập tin media (âm thanh và video) đến trình duyệt. Tôi đang đọc các tập tin thông qua php và gửi dữ liệu cho trình duyệt. Tôi đang sử dụng mã sau đây.Làm cách nào để truyền tệp phương tiện bằng PHP?

header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past 
header("Content-Type: {$file->getMimetype()}"); 
header("Content-Disposition: inline; filename=".$filename.";"); 
header("Content-Length: ".strlen($file_content)); 

echo $file_content; 

Every thing đang làm việc tốt, trừ khi tôi cố gắng để chuyển tiếp các video hoặc audio, (Ý tôi là giả vở kịch hiện tại vị trí là 00:15 và nó trực tiếp đi đến 1:25), phương tiện truyền thông điểm dừng và khi tôi nhấn nút phát một lần nữa, nó bắt đầu từ đầu.

Tôi nghĩ rằng sự cố xảy ra với việc lưu vào bộ đệm nhưng không thể tìm ra được. Tôi đang làm một cái gì đó sai trong tiêu đề hoặc cái gì khác là bắt buộc.

Cảm ơn.

+0

Tôi thích Flash-streaming;), ít filesize = tải nhanh hơn .. Cũng dễ dàng tích hợp vào một trang web. – Jordy

+3

@Jordy AFAIK Flash không thực hiện việc truyền trực tuyến máy chủ. Bạn vẫn cần một kịch bản phía máy chủ để truyền một flv nếu không bạn sẽ phải chờ cho toàn bộ tập tin tải trước khi bạn có thể xem nó. –

+1

folow mà bạn có thể tua đi nhanh: __http: //codesamplez.com/programming/php-html5-video-streaming-tutorial__ – vuhung3990

Trả lời

5

Tôi nghĩ bạn cần triển khai tiêu đề Phạm vi để khách hàng có thể chuyển đến vị trí cụ thể trong tệp. Bạn có thể tìm hiểu những gì xảy ra bởi sniffing the request trình phát sẽ gửi.

+0

Có phải tài sản của người chơi sẽ gửi vị trí nào để tìm kiếm, ý tôi là tôi phải đặt tập lệnh te trong người chơi chỉ định vị trí tìm kiếm và gửi đến máy chủ. –

+0

liên kết đã chết ngay bây giờ. –

+0

Nhưng lưu trữ hoạt động: https://web.archive.org/web/20111207023157/http://linuxonly.nl/docs/38/122_Introduction.html – hakre

1

Tôi đã xem qua này thời gian gần đây có thể giúp bạn:

http://www.jasny.net/articles/how-i-php-x-sendfile/

Thay vì đi qua toàn bộ tập tin thông qua PHP (mà ăn lên bộ nhớ), bạn có thể sử dụng x-sendfile. Đây là một mô-đun Apache cho phép bạn chạy một chương trình PHP, nhưng chuyển điều khiển trở lại máy chủ web để xử lý việc tải xuống tệp thực tế khi mã của bạn đã thực hiện những gì cần làm (xác thực, v.v.).

Điều đó có nghĩa là mã PHP của bạn không phải lo lắng về cách tệp được phân phối; cho phép máy chủ web làm những gì nó được thiết kế cho.

Hy vọng điều đó sẽ hữu ích.

Các vấn đề liên quan