Advertisement
Guest User

burnSubs.sh

a guest
Jun 17th, 2022
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.47 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. ##### Variable: $burnSubs_usage ###############################################
  4. burnSubs_usage="
  5.  Usage:
  6.    ./burnSubs <Video File> [<Subtitle File>] [<Output File>]
  7.    
  8.  Examples:
  9.    To burn in file-embedded subtitles:
  10.      ./burnSubs <Video File>
  11.    
  12.    To burn in external subtitles:
  13.      ./burnSubs <Video File> <Subtitle File>
  14.      
  15.    The default output filename is:
  16.      <Video File>.subtitled.mp4
  17.    
  18.    
  19. "
  20.  
  21.  
  22. ##### Required Argument 1 #####################################################
  23. if [ -z "$1" ]
  24.     then
  25.         echo "Error: Missing required first argument."
  26.         echo "$burnSubs_usage"
  27.         exit 99
  28. fi
  29.  
  30.  
  31. ##### Variable: $VIDEO_SOURCE #################################################
  32. VIDEO_SOURCE=$1
  33.  
  34. if [ -z "$2" ]
  35.     then
  36.         SUBTITLE_SOURCE=$VIDEO_SOURCE
  37.     else
  38.         SUBTITLE_SOURCE=$2
  39. fi
  40.  
  41.  
  42. ##### Variable: $OUTPUT_FILENAME ##############################################
  43. if [ -z "$3" ]
  44.     then
  45.         OUTPUT_FILENAME="${VIDEO_SOURCE}.subtitled.mp4"
  46.     else
  47.         OUTPUT_FILENAME=$3
  48. fi
  49.    
  50.  
  51. ##### Variable: $SUBTITLE_SETTINGS ############################################
  52. SUBTITLE_SETTINGS="force_style='FontName=Arial'"
  53.  
  54.    
  55.  
  56. ##### Variable: $VIDEO_SOURCE #################################################
  57. VIDEO_SOURCE_ESCAPED=$(printf '%q' "$VIDEO_SOURCE")
  58.  
  59.    
  60.  
  61. ##### Variable: $SUBTITLE_SOURCE ##############################################
  62. SUBTITLE_SOURCE_ESCAPED=$(printf '%q' "$SUBTITLE_SOURCE")
  63.  
  64.    
  65.  
  66. ##### Variable: $OUTPUT_FILENAME ##############################################
  67. OUTPUT_FILENAME_ESCAPED=$(printf '%q' "$OUTPUT_FILENAME")
  68.  
  69.  
  70. ##### FUNCTION: Prepare temp data file ####
  71. if [ -f "tmp.dat" ];
  72.     then
  73.         rm "tmp.dat"
  74. fi
  75. touch "tmp.dat"
  76.  
  77.  
  78. ##### FUNCTION: Resize Video if too big ####
  79. `ffmpeg -i "${VIDEO_SOURCE}" 2> tmp.dat`
  80.  
  81. if grep -q " Video: " tmp.dat
  82.     then
  83.         RESOLUTION=`grep " Video: " tmp.dat`
  84.         RESOLUTION=`echo $RESOLUTION | sed -En 's/.* [0-9][0-9]+x([0-9]+) .*/\1/p'`
  85.         echo $RESOLUTION
  86.         if [[ $RESOLUTION -gt 720 ]];
  87.             then
  88.                 ffmpeg -y -i "${VIDEO_SOURCE}" \
  89.                     -c:v libx264 \
  90.                     -crf 25 \
  91.                     -vf subtitles="${SUBTITLE_SOURCE}":${SUBTITLE_SETTINGS},scale=-2:480 \
  92.                     "${OUTPUT_FILENAME}"
  93.             else
  94.                 ffmpeg -y -i "${VIDEO_SOURCE}" \
  95.                     -vf subtitles="${SUBTITLE_SOURCE}":${SUBTITLE_SETTINGS} \
  96.                     "${OUTPUT_FILENAME}"
  97.         fi
  98.     else
  99.     #   cat tmp.dat
  100.         echo "ERROR: Unable to read source video \"$VIDEO_SOURCE\""
  101.         exit 99
  102. fi
  103.  
  104. if [ -f "tmp.dat" ];
  105.     then
  106.         rm "tmp.dat"
  107. fi
  108.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement