2015-05-29 2 views
0

Скажем, у меня есть видео на удаленном сервере и это его URLPHP файл потока с удаленного сервера

«http://domain/video-path/video.mp4»

Что такое правильный способ для потоковой передачи видео с помощью PHP с возможностью перемещения видео в обратном или прямом направлении ..

Я знаю, как для потоковой передачи видео с помощью fopen и fread функции, но я хочу игрока (html5 плеер) для кэширования видео, так что клиент может переместить его вперед или назад. спасибо и извините за мой плохой английский.

+1

Попробуйте следующее: http://codesamplez.com/programming/php-html5-video-streaming-tutorial –

+0

Почему вы хотите проксировать видео на своем сервере? – Michas

+0

У меня небольшая сеть. Я не хочу, чтобы компьютеры подключались напрямую к Интернету, и я хочу разрешить только некоторые видео с youtube. Поэтому я хочу получить видео из Интернета и передать его другому компьютеров и сохранить это видео на сервер HDD, чтобы быстрее его транслировать в следующий раз .. Я могу это сделать, я имею в виду, что я могу получить видео из Интернета и передать его на другой компьютер и сохранить его на сервере hdd .. каждая вещь работает отлично, но клиент не может переместить видео в обратную или передовую. Я знаю, что могу использовать прокси-сервер, например, squid, но я хочу сделать это через php .. – MrCoder

ответ

1

Не знаете, сможете ли вы сделать это на PHP так, как вы описали.

Допустим, у нас есть этот HTML:

<video width="320" height="240" controls> 
    <source src="playmymovie.php?url=http://domain/video-path/video.mp4" type="video/mp4"> 
    Your browser does not support the video tag. 
</video> 

Так что теперь мы должны сделать PHP-страницу, которая обрабатывает это (см Using php to output an mp4 video):

<?php 
$vid_url = isset($_GET['url'])?$_GET['url']:""; 
if(empty($vid_url)){ 
    // trigger 404 
    header("HTTP/1.0 404 Not Found"); 
} else { 
    // Get Video 

    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $vid_url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    $out = curl_exec($ch); 
    curl_close($ch); 

    // Set header for mp4 
    header('Content-type: video/mp4'); 
    header('Content-type: video/mpeg'); 
    header('Content-disposition: inline'); 
    header("Content-Transfer-Encoding:­ binary"); 
    header("Content-Length: ".filesize($out)); 

    // Pass video data 
    echo $out; 
} 
exit(); 
?> 

Если бы это было, я бы проверить сначала URL, убедитесь, что вы получили статус 200, прежде чем пытаться передать его обратно. Вы также можете активировать правильный статус, чтобы браузер знал, что происходит, и может предупредить пользователя (или вас).

+0

На самом деле моя проблема заключается не в том, как передавать видео. Моя проблема заключается в том, как передавать видео с возможностью переместите видео назад или вперед .. кажется, что это невозможно, потому что функция fseek не поддерживает удаленные файлы, она работает только с локальными файлами .. поэтому я ищу сейчас о потоковой передаче видео во время написания .. Я сделаю скрипт чтобы загрузить его на мой сервер и другой скрипт, чтобы передать его во время написания. спасибо в любом случае за вашу помощь, и я надеюсь, что вы поймете, что я имел в виду – MrCoder

+0

Возможно, вы можете заставить кеширование в браузере, чтобы браузер мог перемотать хотя бы по меньшей мере: http://stackoverflow.com/questions/5111382/under-what-conditions -will-the-browser-cache-video-files – Twisty

+0

Также это может быть полезно вам: http://stackoverflow.com/questions/15797762/reading-mp4-files-with-php – Twisty

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