Guest User

Untitled

a guest
May 21st, 2018
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.37 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. CODEC="-c:v libx265 -pix_fmt yuv420p10le"
  4. FORMAT="matroska"
  5. LENGTH=2
  6. HOST=":"
  7.  
  8. if [ "$#" -eq 0 ]; then
  9. exit
  10. fi
  11.  
  12. while [ "$#" -gt 0 ]; do
  13. case "$1" in
  14. -h) HOST+=",$2"; shift 2;;
  15. -o) OUTPUT="$2"; shift 2;;
  16. -c) CODEC="$2"; shift 2;;
  17. -a) CODEC+=" $2"; shift 2;;
  18. -l) LENGTH="$2"; shift 2;;
  19. -f) FORMAT="$2"; shift 2;;
  20. -y) OVERWRITE="-y"; shift 1;;
  21.  
  22. --host=*) HOST+=",${1#*=}"; shift 1;;
  23. --output=*) OUTPUT="${1#*=}"; shift 1;;
  24. --codec=*) CODEC="${1#*=}"; shift 1;;
  25. --append=*) CODEC+=" ${1#*=}"; shift 1;;
  26. --length=*) LENGTH="${1#*=}"; shift 1;;
  27. --format=*) FORMAT="${1#*=}"; shift 1;;
  28. --host|--output|--length|--codec|--append|--format) echo "$1 requires an argument" >&2; exit 1;;
  29.  
  30. -*) echo "invalid option: $1" >&2; exit 1;;
  31. *) INPUT="$1"; shift 1;;
  32. esac
  33. done
  34.  
  35. TMPDIR="$(mktemp -d)"
  36.  
  37. if [ -z "$OUTPUT" ]; then
  38. OUTPUT="${INPUT%.*}".mkv
  39. fi
  40.  
  41. ffmpeg -i "$INPUT" -map 0:v -map 0:a -c copy -f segment -segment_time $LENGTH -segment_format matroska -reset_timestamps 1 "${TMPDIR}/segment-%03d.0"
  42. parallel -j 1 -S "$HOST" --transfer --return "{.}.1" --cleanup --no-notice "ffmpeg -i {} $CODEC -f $FORMAT {.}.1" ::: "${TMPDIR}"/segment-*.0
  43.  
  44. for i in "${TMPDIR}"/segment-*.1; do
  45. echo "file $i" >> "${TMPDIR}"/concat.txt
  46. done
  47.  
  48. ffmpeg -f concat -safe 0 -i "${TMPDIR}"/concat.txt -c copy $OVERWRITE "$OUTPUT"
  49. rm -rf "${TMPDIR}"
Add Comment
Please, Sign In to add comment