entrypoint.cuda.sh 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. #!/usr/bin/env bash
  2. set -e
  3. if [ ! -v "${MAX_MUXING_QUEUE_SIZE}" ]; then
  4. MAX_MUXING_QUEUE_SIZE_ARG="-max_muxing_queue_size ${MAX_MUXING_QUEUE_SIZE} "
  5. fi
  6. if [ ! -v "${ANALYZEDURATION}" ]; then
  7. ANALYZEDURATION_ARG="-analyzeduration ${ANALYZEDURATION} "
  8. fi
  9. quality1=('480' '256k' '64k' 'low' '448000')
  10. quality2=('720' '768k' '128k' 'mid' '448000')
  11. quality3=('960' '1240k' '128k' 'high' '1152000')
  12. quality4=('1280' '1920k' '128k' 'hd720' '2048000')
  13. if [ -v ${SINGLE_STREAM} ]; then
  14. qualities=(quality1 quality2 quality3 quality4)
  15. else
  16. qualities=(quality4)
  17. fi
  18. 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 "
  19. output_hlsvariants=""
  20. for quality in "${qualities[@]}"; do
  21. declare -n qualitylist=$quality
  22. 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]}"
  23. output_hlsvariants=$'\n\t\t'"hls_variant _${qualitylist[3]} BANDWIDTH=${qualitylist[4]};"$'\n'"${output_hlsvariants}"
  24. done
  25. export EXECPUSH="$output_execpush"
  26. export HLSVARIANTS="$output_hlsvariants"
  27. envsubst "$(env | sed -e 's/=.*//' -e 's/^/\$/g')" < \
  28. /etc/nginx/nginx.conf.template > /etc/nginx/nginx.conf
  29. nginx