Потоковое видео с использованием fork не возвращает контент

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

Прежде чем начать, я использую сторонний класс для видеопотоков. Используя мою собственную систему маршрутизации, это работает, но у меня есть проблема, изложенная выше.

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
}
}

Проблема в том, что пакет ответа не содержит данных, кроме правильных заголовков и тому подобного. кто-нибудь знает, почему это произошло?

PS. параметр $ res — это просто еще один класс, устанавливающий заголовки и затем вызывающий класс VideoStream, связанный в верхней части.

0

Решение

Нет необходимости начинать использовать вилки и нитки, чтобы справиться с этим, даже если бы я это сделал, это не решило бы мою проблему.

Что происходит, когда я пытаюсь обновить страницу, она не даст мне, пока буферизация не будет завершена.

Так как мне прекратить буферизацию в теге html5 video?
Это просто, вам нужно приостановить видео, и буферизация перестанет позволять вам обновлять страницу.

Также важно остановить буфер даже до того, как вы запустили видео, чтобы избежать дальнейших проблем (например, видео не загрузится в следующий раз, к сожалению, я не знаю, почему это происходит). Используя Angular.js, я решил эту проблему, прослушав обновление страницы, установив громкость на 0 (чтобы отключить звук при воспроизведении), запустил видео и приостановил его.
Он отлично работает, и вот как я это сделал:

angular.element($window).on('beforeunload', function (event) {
vp.volume = 0;
vp.play();
vp.pause();
});
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]