If you have a set of m4a files and want to automatically convert them to mp3
so you can tag them the right way,
use a snippet I wrote. See the code in its proper formatting at
https://gitlab.com/bgstack15/former-gists/blob/master/to-mp3/m4a-to-mp3.sh.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 |
#!/bin/sh
# reference: https://superuser.com/questions/704493/ffmpeg-convert-m4a-files-to-mp3-without-significant-loss-of-information-quali/704535#704535
logfile="/mnt/bgstack15/log/m4a-to-mp3.$( date -u "+%FT%H%M%SZ" ).log"
func() {
for word in "$@" ;
do
echo "Entering item ${word}";
outdir="${word}/mp3" ; mkdir "${outdir}" || exit 1 ;
find "${word}" -type f \( -regex '.*M4A' -o -regex '.*m4a' \) | while IFS='\0' read infile ;
do
test -f "${infile}" && echo "Found file: \"${infile}\"" || echo "INVALID! ${infile}"
outfile="$( echo "${infile}" | sed -r -e "s/\.m4a/\.mp3/i" )"
echo ffmpeg -i \"${infile}\" -codec:v copy -codec:a libmp3lame -q:a 2 \"${outfile}\"
yes | ffmpeg -i "${infile}" -codec:v copy -codec:a libmp3lame -q:a 2 -y "${outfile}" ; test -n "${outdir}" && /bin/mv -f "${outfile}" "${outdir}/" ;
sleep 2 ;
done
done
}
time func "$@" | tee -a "${logfile}"
|
Comments