diff --git a/html/input.php b/html/input.php index 9e5fe98..5f56988 100644 --- a/html/input.php +++ b/html/input.php @@ -7,9 +7,11 @@ if (!file_exists($jsonFile)) { } $data = json_decode(file_get_contents($jsonFile), true); +/* ---------------- ADD NEW SERVICE ---------------- */ if ($_SERVER["REQUEST_METHOD"] === "POST" && $_POST["action"] === "add") { $new = [ "id" => time(), + "name" => $_POST["name"], "input_udp" => $_POST["input_udp"], "output_udp" => $_POST["output_udp"], "video_format" => $_POST["video_format"], @@ -22,26 +24,33 @@ if ($_SERVER["REQUEST_METHOD"] === "POST" && $_POST["action"] === "add") { $data[] = $new; file_put_contents($jsonFile, json_encode($data, JSON_PRETTY_PRINT)); + $ffmpeg = 'ffmpeg -fflags +genpts+discardcorrupt -re -i "udp://@' . $new["input_udp"] . '?overrun_nonfatal=1&fifo_size=50000000" '; switch ($new["video_format"]) { case "mpeg2video": - $ffmpeg .= " -vf scale=" . $new["resolution"] . " -c:v mpeg2video -pix_fmt yuv420p -b:v " . $new["video_bitrate"] . "k -maxrate " . $new["video_bitrate"] . "k -minrate " . $new["video_bitrate"] . "k -bufsize " . $new["video_bitrate"] . "k"; + $ffmpeg .= " -vf scale=" . $new["resolution"] . " -c:v mpeg2video -pix_fmt yuv420p -b:v " . $new["video_bitrate"] . "k -maxrate " . $new["video_bitrate"] . "k -minrate " . $new["video_bitrate"] . "k -bufsize " . $new["video_bitrate"] . "k"; break; case "h264": - $ffmpeg .= " -vf scale=" . $new["resolution"] . " -c:v h264 -pix_fmt yuv420p -b:v " . $new["video_bitrate"] . "k -maxrate " . $new["video_bitrate"] . "k -minrate " . $new["video_bitrate"] . "k -bufsize " . $new["video_bitrate"] . "k"; + $ffmpeg .= " -vf scale=" . $new["resolution"] . " -c:v h264 -pix_fmt yuv420p -b:v " . $new["video_bitrate"] . "k -maxrate " . $new["video_bitrate"] . "k -minrate " . $new["video_bitrate"] . "k -bufsize " . $new["video_bitrate"] . "k"; break; case "h265": - $ffmpeg .= " -vf scale=" . $new["resolution"] . " -c:v h265 -pix_fmt yuv420p -b:v " . $new["video_bitrate"] . "k -maxrate " . $new["video_bitrate"] . "k -minrate " . $new["video_bitrate"] . "k -bufsize " . $new["video_bitrate"] . "k"; + $ffmpeg .= " -vf scale=" . $new["resolution"] . " -c:v h265 -pix_fmt yuv420p -b:v " . $new["video_bitrate"] . "k -maxrate " . $new["video_bitrate"] . "k -minrate " . $new["video_bitrate"] . "k -bufsize " . $new["video_bitrate"] . "k"; break; } - $ffmpeg .= " -c:a " . $new["audio_format"] . " -b:a " . $new["audio_bitrate"] . 'k -ar 48000 -ac 2 -f mpegts "udp://@' . $new["output_udp"].'?pkt_size=1316&ttl=4"'; + $ffmpeg .= " -c:a " . $new["audio_format"] . " -b:a " . $new["audio_bitrate"] . 'k -ar 48000 -ac 2 -f mpegts "udp://@' . $new["output_udp"] . '?pkt_size=1316&ttl=4"'; + file_put_contents("/var/www/encoder/" . $new["id"] . ".sh", $ffmpeg); - exec("sudo systemctl enable encoder@" . $new["id"]); - exec("sudo systemctl restart encoder@" . $new["id"]); + + if ($new["service"] === "enable") { + exec("sudo systemctl enable encoder@" . $new["id"]); + exec("sudo systemctl restart encoder@" . $new["id"]); + } + echo "OK"; exit; } +/* ---------------- DELETE SERVICE ---------------- */ if ($_SERVER["REQUEST_METHOD"] === "POST" && $_POST["action"] === "delete") { $id = intval($_POST["id"]); $newData = []; @@ -51,21 +60,29 @@ if ($_SERVER["REQUEST_METHOD"] === "POST" && $_POST["action"] === "delete") { } file_put_contents($jsonFile, json_encode($newData, JSON_PRETTY_PRINT)); + exec("sudo systemctl stop encoder@" . $id); exec("sudo systemctl disable encoder@" . $id); - unlink("/var/www/encoder/" . $id . ".sh"); + + if (file_exists("/var/www/encoder/" . $id . ".sh")) { + unlink("/var/www/encoder/" . $id . ".sh"); + } + echo "OK"; exit; } +/* ---------------- EDIT SERVICE ---------------- */ if ($_SERVER["REQUEST_METHOD"] === "POST" && $_POST["action"] === "edit") { $id = intval($_POST["id"]); $newData = []; foreach ($data as $row) { if ($row["id"] == $id) { + $row = [ "id" => $id, + "name" => $_POST["name"], "input_udp" => $_POST["input_udp"], "output_udp" => $_POST["output_udp"], "video_format" => $_POST["video_format"], @@ -75,21 +92,25 @@ if ($_SERVER["REQUEST_METHOD"] === "POST" && $_POST["action"] === "edit") { "audio_bitrate" => $_POST["audio_bitrate"], "service" => $_POST["service"] ]; + $new = $row; + $ffmpeg = 'ffmpeg -fflags +genpts+discardcorrupt -re -i "udp://@' . $new["input_udp"] . '?overrun_nonfatal=1&fifo_size=50000000" '; switch ($new["video_format"]) { case "mpeg2video": - $ffmpeg .= " -vf scale=" . $new["resolution"] . " -c:v mpeg2video -pix_fmt yuv420p -b:v " . $new["video_bitrate"] . "k -maxrate " . $new["video_bitrate"] . "k -minrate " . $new["video_bitrate"] . "k -bufsize " . $new["video_bitrate"] . "k"; + $ffmpeg .= " -vf scale=" . $new["resolution"] . " -c:v mpeg2video -pix_fmt yuv420p -b:v " . $new["video_bitrate"] . "k -maxrate " . $new["video_bitrate"] . "k -minrate " . $new["video_bitrate"] . "k -bufsize " . $new["video_bitrate"] . "k"; break; case "h264": - $ffmpeg .= " -vf scale=" . $new["resolution"] . " -c:v h264 -pix_fmt yuv420p -b:v " . $new["video_bitrate"] . "k -maxrate " . $new["video_bitrate"] . "k -minrate " . $new["video_bitrate"] . "k -bufsize " . $new["video_bitrate"] . "k"; + $ffmpeg .= " -vf scale=" . $new["resolution"] . " -c:v h264 -pix_fmt yuv420p -b:v " . $new["video_bitrate"] . "k -maxrate " . $new["video_bitrate"] . "k -minrate " . $new["video_bitrate"] . "k -bufsize " . $new["video_bitrate"] . "k"; break; case "h265": - $ffmpeg .= " -vf scale=" . $new["resolution"] . " -c:v h265 -pix_fmt yuv420p -b:v " . $new["video_bitrate"] . "k -maxrate " . $new["video_bitrate"] . "k -minrate " . $new["video_bitrate"] . "k -bufsize " . $new["video_bitrate"] . "k"; + $ffmpeg .= " -vf scale=" . $new["resolution"] . " -c:v h265 -pix_fmt yuv420p -b:v " . $new["video_bitrate"] . "k -maxrate " . $new["video_bitrate"] . "k -minrate " . $new["video_bitrate"] . "k -bufsize " . $new["video_bitrate"] . "k"; break; } - $ffmpeg .= " -c:a " . $new["audio_format"] . " -b:a " . $new["audio_bitrate"] . 'k -ar 48000 -ac 2 -f mpegts "udp://@' . $new["output_udp"].'?pkt_size=1316&ttl=4"'; + $ffmpeg .= " -c:a " . $new["audio_format"] . " -b:a " . $new["audio_bitrate"] . 'k -ar 48000 -ac 2 -f mpegts "udp://@' . $new["output_udp"] . '?pkt_size=1316&ttl=4"'; + file_put_contents("/var/www/encoder/" . $new["id"] . ".sh", $ffmpeg); + if ($new["service"] === "enable") { exec("sudo systemctl enable encoder@" . $new["id"]); exec("sudo systemctl restart encoder@" . $new["id"]); @@ -105,6 +126,15 @@ if ($_SERVER["REQUEST_METHOD"] === "POST" && $_POST["action"] === "edit") { echo "OK"; exit; } + +/* ---------------- RESTART SERVICE ---------------- */ +if ($_SERVER["REQUEST_METHOD"] === "POST" && $_POST["action"] === "restart") { + $id = intval($_POST["id"]); + exec("sudo systemctl restart encoder@" . $id); + echo "OK"; + exit; +} + ?> +
| ID | +Name | Input UDP | Output UDP | Video Format | @@ -188,6 +225,7 @@ if ($_SERVER["REQUEST_METHOD"] === "POST" && $_POST["action"] === "edit") {||||
|---|---|---|---|---|---|---|---|---|
| = $row["id"] ?> | += $row["name"] ?> | = $row["input_udp"] ?> | = $row["output_udp"] ?> | = $row["video_format"] ?> | @@ -196,22 +234,25 @@ if ($_SERVER["REQUEST_METHOD"] === "POST" && $_POST["action"] === "edit") {= $row["video_bitrate"] ?> | = $row["audio_bitrate"] ?> | = $row["service"] ?> | ++ |