Guest User

convert video to voice

a guest
Dec 29th, 2024
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.95 KB | Software | 0 0
  1. #!/bin/bash
  2.  
  3. function convert_video_to_voice() {
  4.   # sudo apt install detox ffmpeg
  5.   # tested on GNU bash, version 5.1.16(1)-release (x86_64-pc-linux-gnu)
  6.   s_loc="/media/ramdisk/"
  7.   s_ext="ts\|mp4"
  8.   o_ext="mp3"
  9.   # normalize file names
  10.   readarray -t folderNames < <(find "$s_loc" -type f -regex '.*\.\('$s_ext'\)$' -exec bash -c 'f_loc="{}"; dir="${f_loc%/*}"; rename_file=$(detox -s iso8859_1 "$f_loc"); echo "$dir" | sed "s/.*\///"' \;)
  11.   # move & rename files
  12.   find "$s_loc" -type f -regex '.*\.\('$s_ext'\)$' -exec bash -c 'f_loc="{}"; f_nm="$(basename "$f_loc")"; f_rt="${f_nm%.*}"; f_ex="${f_nm##*.}" ; d_loc=$(echo '$s_loc'$f_rt"_"$(date +%s%N)"."$f_ex); mv "$f_loc" "$d_loc"' \;
  13.   # delete root parent folders
  14.   readarray -t folderNamesUnique < <(printf '%s\n' "${folderNames[@]}" | sort -u)
  15.   if [ ${#folderNamesUnique[@]} -gt 0 ]; then
  16.     cd $s_loc
  17.     for fdir in "${folderNamesUnique[@]}"; do
  18.       if [ -d "$fdir" ]; then
  19.         rm -r "$fdir"
  20.       fi
  21.     done
  22.   fi
  23.   # convert files
  24.   readarray -t files < <(find "$s_loc" -maxdepth 1 -type f -regex '.*\.\('$s_ext'\)$' | sed "s/.*\///")
  25.   if [ ${#files[@]} -gt 0 ]; then
  26.     cd $s_loc
  27.     for i in "${files[@]}"; do
  28.       filename="${i%.*}"
  29.       echo $filename
  30.       cmd=$(echo ffmpeg -nostdin -i '"'$i'" -vn -acodec libmp3lame -ac 2 -ab 32k -ar 16000' '"'$filename"."$o_ext'"')
  31.       echo $cmd
  32.       bash -c "$cmd"
  33.     done
  34.   fi
  35.   # organize files by current date and file extension
  36.   d_loc=$(echo $s_loc$(date '+%Y-%m-%d_%H-%M-%S'))
  37.   readarray -t files < <(find "$s_loc" -maxdepth 1 -type f -regex '.*\.\('$s_ext'\|'$o_ext'\)$' | sed "s/.*\///")
  38.   if [ ${#files[@]} -gt 0 ]; then
  39.     cd $s_loc
  40.     for i in "${files[@]}"; do
  41.       extension="${i##*.}"
  42.       if echo "$extension" | grep -q "$o_ext" ; then
  43.         o_dir="$d_loc/$o_ext"
  44.       else
  45.         o_dir="$d_loc/video"
  46.       fi
  47.       mkdir -p "$o_dir"
  48.       mv "$i" "$o_dir/$i"
  49.     done
  50.   fi
  51. }
  52.  
  53. convert_video_to_voice
Advertisement
Add Comment
Please, Sign In to add comment