У меня проблема с файлами mp4. Html5 Video Tag может воспроизводить его с прямой ссылкой, но не с PHP Header (Mp3 отлично работает с заголовком PHP). Я попробовал почти решение в Stack, но до сих пор не решил свою проблему 🙁
Услышь мой код:
PHP mp4.php
error_reporting(0); $local_file = 'z.mp4';//'b.mp3'; $download_file = 'out.mp4'; // send headers header('Cache-control: private'); header('Content-Type: video/mp4'); header('Content-Length: '.filesize($local_file)); header('Content-Disposition: filename='.$download_file); header('Accept-Ranges: bytes'); header("Content-Transfer-Encoding: binary"); readfile($local_file);
HTML
<video controls="" autoplay="" name="media"> <source src="http://localhost/videos/mp4.php" type="video/mp4"> </video>
Я не знаю, почему 🙁 Пожалуйста, помогите мне.
Благодаря,
ОК! Я решил свою проблему 🙂 Надеюсь, это поможет любому, у меня такая же проблема, как у меня
Просто используйте этот код:
$file = 'local_file'; $newfile = 'outFile'; if (file_exists($file)) { header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename='.basename($newfile)); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . filesize($file)); ob_clean(); flush(); readfile($file); exit; }
Я думаю, вы добавили ненужные заголовки в ваш php-файл. Попробуй это:
$local_file = 'z.mp4'; $size = filesize($local_file); header("Content-Type: video/mp4"); header("Content-Length: ".$size); readfile($local_file);
И код HTML что-то вроде этого
<video width="480" height="320" controls> <source src="mp4.php" type="video/mp4"> </video>
EDIT: это также будет работать для mp3-файлов при изменении заголовка Content-Type и типа видео html.
<video width="480" height="320" controls> <source src="mp3.php" type="audio/mpeg"> </video>