2012-04-23 1 views
2

Так что это мой код видео в PHP , он работает в браузерах, но когда я пытаюсь заставить его играть на iPhones и iPads, похоже, он воспроизводит кнопку воспроизведения с помощью x через нее.PHP-видеоигра на iPad

<?php 
header('Content-type: video/mp4'); 
$homepage = file_get_contents('http://cdn.videos.budtraffic.com/sodaradio/J/Jessie%20J%20-%20Laserlight.mp4'); 
echo $homepage; 
exit; 
?> 
+0

К сожалению, если это, кажется, как глупый вопрос, но почему бы не просто перенаправить браузер непосредственно в файл? 'header ('Location: http: // blablabla');' –

+0

, потому что этот сервер является нашим медиа-файлом, и единственным доступным для него IP-адресом является IP-адрес с нашего сайта sodaradio. – RussellHarrower

+0

Возможный дубликат [видео Mp4 не будет играть в iPad] (http://stackoverflow.com/questions/3906558/mp4-video-wont-play-in-the-ipad) – JJJ

ответ

4

Explanation on Apple Web site

Короткий ответ:

Поскольку IOS устройство требует сервер для поддержки байт-диапазонов запросить видео, и ваш код не обеспечивает такую ​​возможность.

Длинный ответ:

Когда IOS устройство сделать запрос на видео, они не скачать все видео. Они загружают только небольшой фрагмент за раз, чтобы минимизировать использование полосы пропускания, а также потому, что пользователь может захотеть перейти к более поздней части видео без загрузки предыдущих частей. Для этой цели они задают диапазон байтов. В основном, они говорят серверу «Эй, дай мне часть файла между 100-м и 200-м байтами». Запрос Байт-диапазон использовать заголовок Range, и выглядеть следующим образом

GET /myvideo.mp4 HTTP/1.1 
Host: www.example.com 
Range: bytes=500-999 

сусло сервер в этом случае ответ что-то вроде этого

HTTP/1.1 206 Partial Content 
Content-Type: video/mp4 
Content-Range: bytes 500-999/20000 

Таким образом, вы будете нуждаться в гораздо больше, чем те четыре PHP линия для поддержки устройств iOS. Сначала вы проанализируете заголовок Range. Эта информация доступна в глобальном каталоге $_SERVER['HTTP_RANGE']. Затем вам нужно будет извлечь только эту часть файла и отправить его клиенту. Вам также потребуется заполнить заголовок Content-Range.

Обратите внимание, что заголовок Content-Range включает полный размер файла, поэтому ваш код должен будет предоставить эту информацию. Отметим также, что почти каждый сервер поддерживает такой запрос для статических файлов. Если вам не нужно делать специальную обработку файла, возможно, вам нужно скопировать файл на общедоступный сервер и позволить ему выполнить эту работу за вас.

несвязанного комментарий

принять это как конструктивную критику, но ваш код в его нынешнем виде приведет сервера к его колену. Вы в основном положите весь файл в память перед его отправкой, и хуже того, вы делаете это для каждый запрос. Если 100 человек загружают 100 МБ видео одновременно, вам понадобится 10 ГБ памяти на сервере, чтобы обслуживать их. Это не масштабируется, совсем нет.

Лучшим решением было бы отправить файл в виде его чтения с вашего CDN, используя функцию readfile. Таким образом, вам нужно всего лишь использовать небольшой кусок памяти, и вы можете выполнять гораздо более параллельные запросы.

EDIT: на самом деле вам также необходимо ответить специальным кодом ответа, частичным содержанием 206. Я забыл это в первой версии этого ответа. Теперь исправлено

+0

Так вы могли бы помочь или указать мне в правильном направлении, где исправить это? – RussellHarrower

+0

Искать «byte-range php» в google. Вы должны найти пример кода о том, как это сделать. –

1

Я пытаюсь сделать то же самое: безопасный скрипт PHP для доступа к видео MP4.

iOS (iPad & iPhone) не работает.

Я судимое с тем, что вы сказали (диапазон байт), после этого урока:

http://mobiforge.com/developing/story/content-delivery-mobile-devices

Но IPad НИКОГДА не посылать «HTTP_RANGE» это в своем запросе: причина это .php файл, то почему бы его сделай это??

Я сделал правило перезаписи (access.mp4 -> access.php), и даже когда iOS пытается достичь access.mp4, в запросе на сервер нет HTTP_RANGE.

Так что, я думаю, что нет никакого способа, чтобы сделать безопасный PHP скрипт работает с прошивкой ...

+0

Задайте новый вопрос и вставьте код, который вы используете (например, для личной информации). Тогда мне или кому-то еще может помочь. –

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

  • Нет связанных вопросов^_^