2015-05-29 78 views
0

比方说,我有一个远程服务器上的视频这个公司网址PHP流文件

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

什么是使用PHP与中移动的能力,以串流播放这部影片的正确方法视频向后或向前......

我知道如何使用fopenfread函数流式传输视频,但我希望播放器(html5播放器)缓存视频,以便客户端可以将其移动到前进或后退。 。谢谢并为我的坏英语感到抱歉。

+1

试试这个:http://codesamplez.com/programming/php-html5-video-streaming-tutorial –

+0

为什么你想要代理服务器上的视频? – Michas

+0

我有一个小网络..我不想要电脑直接连接到互联网,我想只允许来自YouTube的一些视频..所以我想要从互联网上获取视频并将其流到另一个电脑,并保存这个视频到服务器硬盘在下一次更快的流..我可以做到这一点我的意思是我可以从互联网上获取视频,并将其流到另一台计算机,并将其保存到服务器硬盘..每一件事工作正常,但客户端无法将视频向后或向前移动。 我知道我可以使用代理服务器像鱿鱼,但我想通过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(); 
?> 

如果是我的话,我将考验首先请确保您获得200状态,然后再尝试将其传回。您也可以触发正确的状态,以便浏览器知道发生了什么并可以提醒用户(或您)。

+0

其实我的问题不是如何流化视频..我的问题是关于如何流视频的能力移动视频后退或前进..它似乎是不可能的,因为fseek函数不支持远程文件,它只适用于本地文件..所以我现在搜索关于正在写入时流式传输视频..我会做一个脚本将其下载到我的服务器和其他脚本以在写入时进行流式传输。感谢您的帮助,我希望你能明白我的意思 – MrCoder

+0

也许你可以在浏览器中强制缓存,使浏览器至少可以倒带:http://stackoverflow.com/questions/5111382/under-what-c​​onditions -will-the-browser-cache-video-files – Twisty

+0

这也许对你有用:http://stackoverflow.com/questions/15797762/reading-mp4-files-with-php – Twisty