Guest User

Untitled

a guest
Apr 24th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.15 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. usage_exit() {
  4. echo "Usage: $0 [options] MPL_FILE" 1>&2
  5. echo "" 1>&2
  6. echo "options:" 1>&2
  7. echo " -i input source file" 1>&2
  8. echo " -d destination dir" 1>&2
  9. echo " -r output video resolution (default: 1280x720)" 1>&2
  10. echo " -s output video aspect (default: 16:9)" 1>&2
  11. echo " -f output video fps (default: 29.97)" 1>&2
  12. echo " -v output video codec (default: libx264)" 1>&2
  13. echo " -a output audio codec (default: aac)" 1>&2
  14. echo " -t tsMuxer path" 1>&2
  15. exit 1
  16. }
  17.  
  18. while getopts i:d:v:r:s:f:a:t: OPT
  19. do
  20. case ${OPT} in
  21. 'i' )
  22. FILE_SRC=${OPTARG}
  23. ;;
  24. 'd' )
  25. DIR_DEST=${OPTARG}
  26. ;;
  27. 'v' )
  28. TYPE_VIDEO=${OPTARG}
  29. ;;
  30. 'r' )
  31. RESOLUTION=${OPTARG}
  32. ;;
  33. 's' )
  34. ASPECT=${OPTARG}
  35. ;;
  36. 'f' )
  37. FPS=${OPTARG}
  38. ;;
  39. 'a' )
  40. TYPE_AUDIO=${OPTARG}
  41. ;;
  42. 't' )
  43. TSMUXER=${OPTARG}
  44. ;;
  45. *)
  46. usage_exit
  47. ;;
  48. esac
  49. done
  50.  
  51. TSMUXER=${TSMUXER:-'/usr/bin/tsMuxeR'}
  52. DIR_DEST=${DIR_DEST:-'.'}
  53. RESOLUTION=${RESOLUTION:-'1280x720'}
  54. ASPECT=${ASPECT:-'16:9'}
  55. FPS=${FPS:-'29.97'}
  56. TYPE_VIDEO=${TYPE_VIDEO:-'libx264'}
  57. TYPE_AUDIO=${TYPE_AUDIO:-'aac'}
  58.  
  59. DIR_TEMP='.mts_parser'
  60.  
  61. rm -rf ${DIR_TEMP}
  62. mkdir ${DIR_TEMP}
  63. cd ${DIR_TEMP}
  64.  
  65. ${TSMUXER} ${FILE_SRC} | \
  66. grep -E '^(File|Marks).+' | \
  67. perl -pe 's/\n/,/g' | \
  68. perl -pe 's/,File/\nFile/g' | \
  69. perl -pe 's/Marks:\s+(.+)/Marks=$1/g' |
  70. perl -pe 's/^File.+name=(.+)/File=$1/g' |
  71. tr -d ' ' > mts.info
  72.  
  73. ID_VIDEO=$(\
  74. ${TSMUXER} ${FILE_SRC} | \
  75. grep -B 1 -E "Stream\s*type:\s*H\.264" | \
  76. head -n 1 | sed -e 's/\s\+//g' | cut -d: -f2)
  77. ID_AUDIO=$(\
  78. ${TSMUXER} ${FILE_SRC} | \
  79. grep -B 1 -E "Stream\s*type:\s*AC3" | \
  80. head -n 1 | sed -e 's/\s\+//g' | cut -d: -f2)
  81.  
  82. FFMPEG_OPT_BASE="-profile:v baseline -level:v 3.1"
  83. FFMPEG_OPT_VIDEO="-vcodec ${TYPE_VIDEO} -s ${RESOLUTION} -aspect ${ASPECT} -vf fps=${FPS}"
  84. FFMPEG_OPT_AUDIO="-acodec ${TYPE_AUDIO} -strict experimental"
  85. FFMPEG_OPT="${FFMPEG_OPT_BASE} ${FFMPEG_OPT_VIDEO} ${FFMPEG_OPT_AUDIO}"
  86. FILES=()
  87. COUNT=0
  88.  
  89. cat mts.info | while read LINE
  90. do
  91. if [ $(echo ${LINE} | grep -c Marks) -gt 0 ]; then
  92. if [ ${#FILES[@]} -gt 0 ]; then
  93. NUMBER=$(printf '%03d' ${COUNT})
  94. BASE=${FILES[0]}
  95. if [ ${#FILES[@]} -eq 1 ]; then
  96. echo "cp ${BASE} ${DIR_DEST}/${NUMBER}.$(basename ${BASE})" | tee -a convert.sh
  97. echo "ffmpeg -i ${BASE} ${FFMPEG_OPT} ${DIR_DEST}/${NUMBER}.$(basename ${BASE}).mp4" | tee -a convert.sh
  98. else
  99. echo "cat ${FILES[@]} > ${DIR_DEST}/${NUMBER}.$(basename ${BASE})" | tee -a convert.sh
  100. echo "ffmpeg -i ${DIR_DEST}/${NUMBER}.$(basename ${BASE}) ${FFMPEG_OPT} ${DIR_DEST}/${NUMBER}.$(basename ${BASE}).mp4" | tee -a convert.sh
  101. fi
  102. COUNT=$((${COUNT}+1))
  103. fi
  104.  
  105. FILES=($(echo ${LINE} | cut -d, -f1 | cut -d= -f2))
  106. else
  107. FILES=(${FILES[@]} $(echo ${LINE} | cut -d= -f2))
  108. fi
  109. done
  110.  
  111. chmod +x convert.sh
  112. . convert.sh
Add Comment
Please, Sign In to add comment