| 12345678910111213141516171819202122232425262728293031323334353637 |
- #!/usr/bin/env bash
- set -e
- if [ ! -v "${MAX_MUXING_QUEUE_SIZE}" ]; then
- MAX_MUXING_QUEUE_SIZE_ARG="-max_muxing_queue_size ${MAX_MUXING_QUEUE_SIZE} "
- fi
- if [ ! -v "${ANALYZEDURATION}" ]; then
- ANALYZEDURATION_ARG="-analyzeduration ${ANALYZEDURATION} "
- fi
- quality1=('480' '256k' '64k' 'low' '448000')
- quality2=('720' '768k' '128k' 'mid' '448000')
- quality3=('960' '1240k' '128k' 'high' '1152000')
- quality4=('1280' '1920k' '128k' 'hd720' '2048000')
- if [ -v ${SINGLE_STREAM} ]; then
- qualities=(quality1 quality2 quality3 quality4)
- else
- qualities=(quality4)
- fi
- output_execpush="/usr/local/bin/ffmpeg $ANALYZEDURATION_ARG-async 1 -vsync -1 -hwaccel cuda -hwaccel_output_format cuda -c:v h264_cuvid -i rtmp://localhost:1935/stream/\$name "
- output_hlsvariants=""
- for quality in "${qualities[@]}"; do
- declare -n qualitylist=$quality
- output_execpush="$output_execpush"$'\n\t\t'"-c:v h264_nvenc -c:a aac -b:v ${qualitylist[1]} -b:a ${qualitylist[2]} -vf \"scale_npp=${qualitylist[0]}:trunc(ow/a/2)*2\" -zerolatency 1 $MAX_MUXING_QUEUE_SIZE_ARG-f flv rtmp://localhost:1935/hls/\$name_${qualitylist[3]}"
- output_hlsvariants=$'\n\t\t'"hls_variant _${qualitylist[3]} BANDWIDTH=${qualitylist[4]};"$'\n'"${output_hlsvariants}"
- done
- export EXECPUSH="$output_execpush"
- export HLSVARIANTS="$output_hlsvariants"
- envsubst "$(env | sed -e 's/=.*//' -e 's/^/\$/g')" < \
- /etc/nginx/nginx.conf.template > /etc/nginx/nginx.conf
- nginx
|