2013-09-10 3 views
0

У меня есть одна проблема. Я хотел бы заказать из (zip) файлов воспроизведение видео таким образом, чтобы получить соединение, чтобы вы могли включить его в значок HTML5. Как я привел пример. Но это не работает.Воспроизведение файлов mp4 из rar или zip-файлов

<?php $video = fopen('zip://video.zip#video.mp4', 'r'); ?> 
<video> 
    <source src='<? echo $video; ?>' type='video/mp4' /> 
</video> 

ответ

1

$video в приведенном выше коде только ручка файла на стороне сервера, вы можете использовать, чтобы прочитать файл из архива. Он не может использоваться непосредственно для браузера.

Вам необходимо обработать чтение файла и вернуть его в отдельный HTTP-запрос. Обычно для этого используется второй скрипт. (Или, если ваше видео относительно мало, вы можете использовать URL-адреса данных, но это не то, что я попытаюсь сделать.) Кроме того, если вы хотите разрешить запросы диапазона байтов, вам придется самому это обработать в вашей логике видеообслуживания.

Вот довольно простой сценарий:

Мой videos.zip файл содержит несколько различных видео, и я хочу, чтобы получить конкретный один и показать его на странице под названием video.php

Во-первых у меня есть зритель, скажем video.php, [edit: содержащий тег видео и URL-адрес моего второго скрипта в качестве источника. Так как я мог бы служить другой файл в какой-то момент, я поставил его принять имя файла в параметре v запроса]

..some html/php.. 
<video> 
    <source src='zipserve.php?v=itsrainintoast.mp4' type='video/mp4' /> 
</video> 
..more html/php.. 

Тогда в zipserve.php у меня есть что-то вроде этого:.

$filename = $_GET['v']; //You probably want to check that this exists first, btw. 
$fp = fopen('zip://videos.zip#'.$filename, 'r'); 
if($fp) 
{ 
    header('content-type: video/mp4'); 
    //Note: you should probably also output an appropriate content-length header. 
    while(!feof($fp)) 
    { 
     echo fread($fp, 8196); 
    } 
    fclose($fp); 
} 
else 
{ 
    echo 'Some error message here.'; 
} 

--Addendum-- Следует также отметить, что для этого необходимо, чтобы расширение расширения zip было включено.

Более полный пример сценария для извлечения видео с обработкой диапазона и т. П. Можно найти в вопросе на mp4 from PHP - Not playing in HTML5 Video tag, но вам нужно настроить его, чтобы разрешить чтение из zip-файла.

+0

но тиковый конус, не работающий на меня, показывает только черный квадрат и не играет так же хорошо, как на странице «mp4 от PHP - не играет в HTML5 Video tag» тоже не работает. но zip: // workin becuse протестирован –

+0

Если вы используете Firefox, щелкните правой кнопкой мыши черный ящик и выберите игру. Он не будет воспроизводиться автоматически, и я не добавил никаких элементов управления, чтобы щелкнуть, чтобы сообщить об этом. – EPB

+0

В качестве дополнительного примечания Может потребоваться некоторое время, чтобы начать, если видеоролик длинный, а индекс - в конце файла, так как он должен будет загрузить весь файл, чтобы начать воспроизведение. Когда я сделал опечатку, я не получил черный ящик, так что вы должны быть на правильном пути. – EPB

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