summaryrefslogtreecommitdiff
path: root/convertvideotoaudioonly
blob: bc443c317041b05f7e69f37b0665aebcba439894 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/bin/sh
#SNDDIR=/media/storage/sound
#SNDDIR=$PWD
SNDDIR=/dev/shm
convert() {
  f="$1"
  iext=${f##*.}
  case $iext in
    ogg|mp3|m4a)
      printf " # skipping %s\n" "$f" && continue
      ;;
    *)
      ;;
  esac
  iacodec=$(mediainfo --Output=JSON "$f" |
    jq -r '.media.track[]|select(.["@type"]=="Audio")|.Format|ascii_downcase')
  [ -z "$iacodec" ] && \
    printf " # Looks like no audio track in %s, skipping\n" "$f" && \
    continue
  case $iacodec in
    aac)
      oext=m4a
      ;;
    opus|vorbis)
      oext=ogg
      ;;
    mp3)
      oext=mp3
      ;;
    *)
      printf " # Unknown codec %s, skipping %s\n" $iacodec "$f" && continue
      ;;
  esac
  ofname="$(basename "$f")"
  ofname=$SNDDIR/"${ofname%.*}".$oext
  printf "Detected %s/%s, converting to %s\n" $iext $iacodec $ofname
  ffmpeg -i "$f" -vn -sn -c:a copy "$ofname"
}
for f in "$@" ; do convert "$f" && rm "$f" ; done