Live streamovní videa ze souboru

vosy
Člen | 525
+
0
-

Ahoj, lze nejak v nette udelat to, ze na ftp budu mit video soubor (delka 1hodina) a chtel bych, aby byl spustitelny treba jen v 18h s tim ze kdyz se nekdo na video podiva v 18:20 tak aby se video neprehravalo od zacatku ale od 20. minuty? Pripadne aby video nebylo stahnutelne na disk?
Neco jako je Clickmeeting.

dakur
Člen | 493
+
0
-

Jít by to mělo, ale určitě to moc nesouvisí s Nette. Můžeš využit různé části Nette k různým úkolům s tím souvisejícím, ale Nette není nástroj na live-streaming videa, takže samotné řešení streamování za tebe nevyřeší.

Osobně bych zkusil google: php stream video file

n.u.r.v.
Člen | 485
+
+1
-

Já streamuju video takto, ale nevím zda je to optimální metoda,ale funguje to:

public function actionStreamVideo($file, $type) {
        //...
            if (file_exists($file)) {
                $fp = @fopen($file, 'rb');
                $size = filesize($file); // File size
                $length = $size;           // Content length
                $start = 0;               // Start byte
                $end = $size - 1;       // End byte

                header('Content-type: video/' . $type);
                //header("Accept-Ranges: 0-$length");
                header("Accept-Ranges: bytes");
                if (isset($_SERVER['HTTP_RANGE'])) {

                    $c_start = $start;
                    $c_end = $end;

                    list(, $range) = explode('=', $_SERVER['HTTP_RANGE'], 2);
                    if (strpos($range, ',') !== false) {
                        header('HTTP/1.1 416 Requested Range Not Satisfiable');
                        header("Content-Range: bytes $start-$end/$size");
                        exit;
                    }
                    if ($range == '-') {
                        $c_start = $size - substr($range, 1);
                    } else {
                        $range = explode('-', $range);
                        $c_start = $range[0];
                        $c_end = (isset($range[1]) && is_numeric($range[1])) ? $range[1] : $size;
                    }
                    $c_end = ($c_end > $end) ? $end : $c_end;
                    if ($c_start > $c_end || $c_start > $size - 1 || $c_end >= $size) {
                        header('HTTP/1.1 416 Requested Range Not Satisfiable');
                        header("Content-Range: bytes $start-$end/$size");
                        exit;
                    }
                    $start = $c_start;
                    $end = $c_end;
                    $length = $end - $start + 1;
                    fseek($fp, $start);
                    header('HTTP/1.1 206 Partial Content');
                }
                header("Content-Range: bytes $start-$end/$size");
                header("Content-Length: " . $length);

                $buffer = 1024 * 8;
                while (!feof($fp) && ($p = ftell($fp)) <= $end) {

                    if ($p + $buffer > $end) {
                        $buffer = $end - $p + 1;
                    }
                    set_time_limit(0);
                    echo fread($fp, $buffer);
                    flush();
                }

                fclose($fp);
                exit();
//...

    }

v šabloně pak

<div class="video">
                                <video poster="{$basePath}/www/images/video1-poster.jpg" controls controlsList="nodownload">
                                    <source src="{link :FileModule:Download:streamVideo, 'video1', 'mp4'}" type="video/mp4">
                                </video>
                            </div>

ale s tím časem aby to začalo od x-té minuty netuším