使用 fork 的流媒体视频不 return 内容
Streaming video using fork does not return content
当我尝试两次请求相同的视频流时遇到某种超时,因此我认为分支可以解决我的问题。
在开始之前,我使用的是 third party class for video streams。使用我自己的路由系统是可行的,但我遇到了上述问题。
public function stream ($req, $res) {
$video = c_video_folder . $req->get_param('id') . '.mp4';
if (file_exists($video)) {
$res->videoStream($video);
} else {
$res->failure(204); // no content
}
}
尝试使用叉子后,它看起来像这样:
public function stream ($req, $res) {
$video = c_video_folder . $req->get_param('id') . '.mp4';
if (file_exists($video)) {
$pid = pcntl_fork();
if ($pid == -1) {
$res->videoStream($video);
} else { //async
$res->videoStream($video);
}
} else {
$res->failure(204); // no content
}
}
出现的问题是响应包不包含任何数据,除了正确的 headers 等。有谁知道为什么会这样?
PS。参数 $res,只是另一个 class 设置 headers,然后调用顶部链接的 VideoStream class。
没有必要开始使用 forks 和 pthreads 来处理这个问题,即使我这样做也不能解决我的问题。
当我尝试刷新页面时,在缓冲完成之前它不会让我刷新。
那么如何停止在 html5 视频标签中缓冲?
很简单,你必须暂停视频,然后缓冲将停止让你能够刷新页面。
在开始播放视频之前就停止缓冲以避免进一步的问题(例如视频下次无法加载,不幸的是我不知道为什么会这样)也很重要。使用 Angular.js 我通过听页面刷新解决了这个问题,将音量设置为 0(播放时静音),开始播放视频并暂停。
它工作得很好,我是这样做的:
angular.element($window).on('beforeunload', function (event) {
vp.volume = 0;
vp.play();
vp.pause();
});
当我尝试两次请求相同的视频流时遇到某种超时,因此我认为分支可以解决我的问题。
在开始之前,我使用的是 third party class for video streams。使用我自己的路由系统是可行的,但我遇到了上述问题。
public function stream ($req, $res) {
$video = c_video_folder . $req->get_param('id') . '.mp4';
if (file_exists($video)) {
$res->videoStream($video);
} else {
$res->failure(204); // no content
}
}
尝试使用叉子后,它看起来像这样:
public function stream ($req, $res) {
$video = c_video_folder . $req->get_param('id') . '.mp4';
if (file_exists($video)) {
$pid = pcntl_fork();
if ($pid == -1) {
$res->videoStream($video);
} else { //async
$res->videoStream($video);
}
} else {
$res->failure(204); // no content
}
}
出现的问题是响应包不包含任何数据,除了正确的 headers 等。有谁知道为什么会这样?
PS。参数 $res,只是另一个 class 设置 headers,然后调用顶部链接的 VideoStream class。
没有必要开始使用 forks 和 pthreads 来处理这个问题,即使我这样做也不能解决我的问题。
当我尝试刷新页面时,在缓冲完成之前它不会让我刷新。
那么如何停止在 html5 视频标签中缓冲? 很简单,你必须暂停视频,然后缓冲将停止让你能够刷新页面。
在开始播放视频之前就停止缓冲以避免进一步的问题(例如视频下次无法加载,不幸的是我不知道为什么会这样)也很重要。使用 Angular.js 我通过听页面刷新解决了这个问题,将音量设置为 0(播放时静音),开始播放视频并暂停。 它工作得很好,我是这样做的:
angular.element($window).on('beforeunload', function (event) {
vp.volume = 0;
vp.play();
vp.pause();
});