4

Так что я получаю эту ошибку, когда воспроизводится часть видео. Когда Chrome полностью загружает видео, он перестает играть с этой ошибкой. Кроме того, статус изменения запроса от 206 до (не удалось), а затем Chrome отправляет некоторые другие запросы с Range:bytes=2990775- и ответ сервера:ERR_CONTENT_LENGTH_MISMATCH при загрузке видео в chrome

Accept-Ranges:bytes 
Cache-Control:private 
Connection:keep-alive 
Content-Disposition:attachment; filename="About The Author.mp4" 
Content-Length:0 
Content-Range:bytes 2990775-2990775/2990776 
Content-Transfer-Encoding:binary 
Content-Type:video/mp4 
Date:Tue, 14 Feb 2017 13:46:24 GMT 
Last-Modified:Wed, 08 Feb 2017 05:43:27 GMT 
Pragma:public 
Server:Apache/2 
Vary:User-Agent 
X-Powered-By:PHP/5.4.45 

У меня есть еще один сайт на том же сервере, и он отлично работает там.

Вот мой PHP код:

 $filesize = filesize($resource->path); 

     $matches = explode("-", substr($_SERVER['HTTP_RANGE'],6)); 
     if (empty($matches[1])) 
     { 
      $matches[1] = $filesize - 1; 
     } 

     $offset = intval($matches[0]); 
     $length = intval($matches[1]) - $offset; 

     $file = fopen($resource->path, 'r'); 

     fseek($file, $offset); 

     $data = fread($file, $length); 
     fclose($file); 

     header('HTTP/1.1 206 Partial Content'); 
     header('Content-Range: bytes ' . $offset . '-' . ($offset + $length) . '/' . $filesize); 

     header('Pragma: public'); 
     header('Last-Modified: '.gmdate ('D, d M Y H:i:s', filemtime ($resource->path)).' GMT'); 
     header('Cache-Control: private',false); 
     header('Content-Type: ' . $mime); 
     header('Content-Length: ' . ($length + 1)); 
     header('Content-Disposition: attachment; filename="' . $resource->filename . '"'); 
     header('Content-Transfer-Encoding: binary'); 
     header('Accept-Ranges: bytes'); 

     print($data); 

Извините за мой плохой английский.

+0

У меня есть аналогичная проблема с Flask. –

ответ

1

Я нашел проблему.

I изменено $data = fread($file, $length); до $data = fread($file, $length + 1);.

Я не знаю, почему запрошенная длина должна быть плюс одна, но она решила проблему.

Смежные вопросы