نوشته شده توسط
Mohsen74_programmer
خیلی ممنون مشکلم حل شد
کد زیر خیلی خوب این کار رو انجام میده
("$file_pointer = fopen($filePath, "rb
($data = fread($file_pointer, $size_file
("header("Content-type: video/mp4
echo $data
در کروم و فایرفاکس هم در ویندوز هم در اندورید فیلم لود و اجر میشه.
اما متاسفانه داخل safari در ios فیلم لود نمیشه.
سلام
برای فایلهای ویدئویی کوتاه و کم حجم میتوانید از php برای ساخت توکن و اعتبار سنجی کاربر استفاده کنید. در این حالت نیز ضرورتی ندارد که فایل ها را با php خوانده و برای کاربر ارسال کنید. کافیست بعد از اعتبار سنجی کاربر از ماژول mod-xsendfile آپاچی استفاده کنید:
<?php
//We want to force a download box with the filename hello.txt
header('Content-Disposition: attachment;filename=hello.txt');
//File is located at /home/username/hello.txt
header('X-Sendfile: /home/username/hello.txt');
یا از PECL module استفاده کنید:
<?php
http_send_content_disposition("document.pdf", true);
http_send_content_type("application/pdf");
http_throttle(0.1, 2048);
http_send_file("../report.pdf");
اما برای فایلهای ویدئویی طولانی و با کیفیت بالا استفاده از این روش نیز مناسب نیست چون ممکنه کانکشن ها باز بمونه و پنهای باند زیادی از سرور استفاده شود. بنابراین بهتر است فایل ویدئویی بصورت قطعه قطعه chunk برای کاربر ارسال شود. هم کاربر می تواند چند قطعه پشت سرهم را همزمان دانلود کنه و هم در صورت تغییر کیفیت ویدئو توسط کاربر کانکشن های سمت سرور باز نمی ماند. مانند پروتکل HLS .
برای ویدئوهای با رزولوشن بالا حتی ممکن است نیاز باشد بخش تصویر و بخش صوت بصورت مجزا برای کاربر ارسال شود.
در نهایت اینکه چالش های زیادی سر راه شماست بنابراین خیلی انرژی خود را روی دانلود نشدن ویدئو صرف نکنید چون تنها می توانید کار را برای کاربر سخت کنید نه غیر ممکن. در بدترین حالت اینکه کاربر صفحه نمایش خود را ضبط می کند.