mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-08-31 07:27:57 +00:00
switch nginx-vod-module to the maintained dio-az fork (#24123)
The `v1.x` line is the same muxed fMP4 code as Kaltura's 1.31 with fixes backported, so the mapping JSON, manifest routes, and ffmpeg consumers are unchanged. The `MAX_CLIPS` patch applies as-is and the HEVC workaround is rewritten for the fork's reformatted source. `vod_hls_version 6` is now explicit because the fork replaced Kaltura's automatic version calculation with a directive that defaults to 4 and only warns when fmp4 needs 6, so playlists were being stamped `EXT-X-VERSION:4` while carrying `EXT-X-MAP`. The `error_page 502 =404` hack is gone: https://github.com/kaltura/nginx-vod-module/issues/468 is a `vod_mode remote` bug and we're `mapped`, so those 502s were really `_vod_response` returning 404 upstream. The fork maps that through now, and the hack was also turning real 5xx into "no recordings".
This commit is contained in:
parent
5de5cee3c6
commit
a1fd978cab
@ -3,7 +3,7 @@
|
|||||||
set -euxo pipefail
|
set -euxo pipefail
|
||||||
|
|
||||||
NGINX_VERSION="1.27.4"
|
NGINX_VERSION="1.27.4"
|
||||||
VOD_MODULE_VERSION="1.31"
|
VOD_MODULE_VERSION="v1.9.1"
|
||||||
SECURE_TOKEN_MODULE_VERSION="1.5"
|
SECURE_TOKEN_MODULE_VERSION="1.5"
|
||||||
SET_MISC_MODULE_VERSION="v0.33"
|
SET_MISC_MODULE_VERSION="v0.33"
|
||||||
NGX_DEVEL_KIT_VERSION="v0.3.3"
|
NGX_DEVEL_KIT_VERSION="v0.3.3"
|
||||||
@ -31,24 +31,24 @@ wget -nv https://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz
|
|||||||
tar -zxf nginx-${NGINX_VERSION}.tar.gz -C /tmp/nginx --strip-components=1
|
tar -zxf nginx-${NGINX_VERSION}.tar.gz -C /tmp/nginx --strip-components=1
|
||||||
rm nginx-${NGINX_VERSION}.tar.gz
|
rm nginx-${NGINX_VERSION}.tar.gz
|
||||||
mkdir /tmp/nginx-vod-module
|
mkdir /tmp/nginx-vod-module
|
||||||
wget -nv https://github.com/kaltura/nginx-vod-module/archive/refs/tags/${VOD_MODULE_VERSION}.tar.gz
|
wget -nv https://github.com/dio-az/nginx-vod-module/archive/refs/tags/${VOD_MODULE_VERSION}.tar.gz
|
||||||
tar -zxf ${VOD_MODULE_VERSION}.tar.gz -C /tmp/nginx-vod-module --strip-components=1
|
tar -zxf ${VOD_MODULE_VERSION}.tar.gz -C /tmp/nginx-vod-module --strip-components=1
|
||||||
rm ${VOD_MODULE_VERSION}.tar.gz
|
rm ${VOD_MODULE_VERSION}.tar.gz
|
||||||
# Patch MAX_CLIPS to allow more clips to be added than the default 128
|
# Patch MAX_CLIPS to allow more clips to be added than the default 128
|
||||||
sed -i 's/MAX_CLIPS (128)/MAX_CLIPS (1080)/g' /tmp/nginx-vod-module/vod/media_set.h
|
sed -i 's/MAX_CLIPS (128)/MAX_CLIPS (1080)/g' /tmp/nginx-vod-module/vod/media_set.h
|
||||||
patch -d /tmp/nginx-vod-module/ -p1 << 'EOF'
|
patch -d /tmp/nginx-vod-module/ -p1 << 'EOF'
|
||||||
--- a/vod/avc_hevc_parser.c 2022-06-27 11:38:10.000000000 +0000
|
--- a/vod/avc_hevc_parser.c
|
||||||
+++ b/vod/avc_hevc_parser.c 2023-01-16 11:25:10.900521298 +0000
|
+++ b/vod/avc_hevc_parser.c
|
||||||
@@ -3,6 +3,9 @@
|
@@ -2,6 +2,9 @@
|
||||||
|
|
||||||
bool_t
|
bool_t
|
||||||
avc_hevc_parser_rbsp_trailing_bits(bit_reader_state_t* reader)
|
avc_hevc_parser_rbsp_trailing_bits(bit_reader_state_t* reader) {
|
||||||
{
|
|
||||||
+ // https://github.com/blakeblackshear/frigate/issues/4572
|
+ // https://github.com/blakeblackshear/frigate/issues/4572
|
||||||
+ return TRUE;
|
+ return TRUE;
|
||||||
+
|
+
|
||||||
uint32_t one_bit;
|
uint32_t one_bit;
|
||||||
|
|
||||||
if (reader->stream.eof_reached)
|
if (reader->stream.eof_reached) {
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -122,6 +122,10 @@ http {
|
|||||||
# Smaller segments, faster generation, better browser compatibility
|
# Smaller segments, faster generation, better browser compatibility
|
||||||
vod_hls_container_format fmp4;
|
vod_hls_container_format fmp4;
|
||||||
|
|
||||||
|
# fMP4 playlists use EXT-X-MAP, which requires HLS protocol
|
||||||
|
# version 6 (RFC 8216 section 7); the module default is 4
|
||||||
|
vod_hls_version 6;
|
||||||
|
|
||||||
secure_token $args;
|
secure_token $args;
|
||||||
secure_token_types application/vnd.apple.mpegurl;
|
secure_token_types application/vnd.apple.mpegurl;
|
||||||
|
|
||||||
@ -130,14 +134,6 @@ http {
|
|||||||
expires off;
|
expires off;
|
||||||
|
|
||||||
keepalive_disable safari;
|
keepalive_disable safari;
|
||||||
|
|
||||||
# vod module returns 502 for non-existent media
|
|
||||||
# https://github.com/kaltura/nginx-vod-module/issues/468
|
|
||||||
error_page 502 =404 /vod-not-found;
|
|
||||||
}
|
|
||||||
|
|
||||||
location = /vod-not-found {
|
|
||||||
return 404;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
location /stream/ {
|
location /stream/ {
|
||||||
|
|||||||
@ -32,8 +32,8 @@ export function GenericVideoPlayer({
|
|||||||
const checkSourceExists = async (url: string) => {
|
const checkSourceExists = async (url: string) => {
|
||||||
try {
|
try {
|
||||||
const response = await fetch(url, { method: "HEAD" });
|
const response = await fetch(url, { method: "HEAD" });
|
||||||
// nginx vod module returns 502 for non existent media
|
// missing media is a 404; 502 still covers a failed or
|
||||||
// https://github.com/kaltura/nginx-vod-module/issues/468
|
// unreachable mapping request, which is equally unplayable
|
||||||
setSourceExists(response.status !== 502 && response.status !== 404);
|
setSourceExists(response.status !== 502 && response.status !== 404);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
setSourceExists(false);
|
setSourceExists(false);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user