Bash script to convert all *flac to *.mp3 with FFmpeg? The Next CEO of Stack OverflowWhy *not* parse `ls` (and what do to instead)?Why is using a shell loop to process text considered bad practice?bash - reading user variable into bash script grepHow can I filter out current directory ('.') in bash?How can I convert all the html files I get into text files after a wget command?Optimize find -exec with multiple conditions : specific files in a dir and specific subdirectories in this dirgnu parallel with ffmpeg does not process first fileBash script to convert all files of a given type from Unix to Dos FormatShell script to convert PDF to images and save in sub-folderPassing paths and filenames to a program from bash scriptMoving files into folders using bash scriptffmpeg: filenames with spaces from bash script
What steps are necessary to read a Modern SSD in Medieval Europe?
What CSS properties can the br tag have?
Is it convenient to ask the journal's editor for two additional days to complete a review?
Is fine stranded wire ok for main supply line?
What difference does it make using sed with/without whitespaces?
Spaces in which all closed sets are regular closed
Scary film where a woman has vaginal teeth
Graph of the history of databases
Is it correct to say moon starry nights?
Why is the US ranked as #45 in Press Freedom ratings, despite its extremely permissive free speech laws?
Does higher Oxidation/ reduction potential translate to higher energy storage in battery?
Is there a difference between "Fahrstuhl" and "Aufzug"?
What day is it again?
free fall ellipse or parabola?
Yu-Gi-Oh cards in Python 3
Why is information "lost" when it got into a black hole?
TikZ: How to fill area with a special pattern?
Defamation due to breach of confidentiality
Help understanding this unsettling image of Titan, Epimetheus, and Saturn's rings?
What would be the main consequences for a country leaving the WTO?
How to Implement Deterministic Encryption Safely in .NET
Players Circumventing the limitations of Wish
(How) Could a medieval fantasy world survive a magic-induced "nuclear winter"?
How did Beeri the Hittite come up with naming his daughter Yehudit?
Bash script to convert all *flac to *.mp3 with FFmpeg?
The Next CEO of Stack OverflowWhy *not* parse `ls` (and what do to instead)?Why is using a shell loop to process text considered bad practice?bash - reading user variable into bash script grepHow can I filter out current directory ('.') in bash?How can I convert all the html files I get into text files after a wget command?Optimize find -exec with multiple conditions : specific files in a dir and specific subdirectories in this dirgnu parallel with ffmpeg does not process first fileBash script to convert all files of a given type from Unix to Dos FormatShell script to convert PDF to images and save in sub-folderPassing paths and filenames to a program from bash scriptMoving files into folders using bash scriptffmpeg: filenames with spaces from bash script
I want to convert all *.flac to *.mp3 in the specific folder.
This is what I've tried, but not works:
# change to the home directory
cd ~/music
# convert all *.flac files
ffmpeg -i *.flac -acodec libmp3lame *.mp3
# (optional: check whether there are any errors printed on the terminal)
sleep 60
How to get my goal?
bash shell-script ffmpeg
|
show 1 more comment
I want to convert all *.flac to *.mp3 in the specific folder.
This is what I've tried, but not works:
# change to the home directory
cd ~/music
# convert all *.flac files
ffmpeg -i *.flac -acodec libmp3lame *.mp3
# (optional: check whether there are any errors printed on the terminal)
sleep 60
How to get my goal?
bash shell-script ffmpeg
2
did you try "FOR LOOP"?
– Danila Ladner
Feb 12 '14 at 15:57
@DanilaLadner Not yet. Thanks for the clue.
– Kevin Dong
Feb 12 '14 at 15:58
I wrote a script that does this, in parallel, and copies the tags over: http://tuxhelp.org/#flac-distiller
– user136310
Sep 29 '15 at 19:38
Sorry I forget it. After convert file name become file.avi.mp3 you can use : rename "s/.avi//g" *.avi.mp3 for remove .avi.
– user149335
Dec 29 '15 at 19:47
1
Give computer break after hard work.
– MeowMeow
Jul 13 '18 at 14:21
|
show 1 more comment
I want to convert all *.flac to *.mp3 in the specific folder.
This is what I've tried, but not works:
# change to the home directory
cd ~/music
# convert all *.flac files
ffmpeg -i *.flac -acodec libmp3lame *.mp3
# (optional: check whether there are any errors printed on the terminal)
sleep 60
How to get my goal?
bash shell-script ffmpeg
I want to convert all *.flac to *.mp3 in the specific folder.
This is what I've tried, but not works:
# change to the home directory
cd ~/music
# convert all *.flac files
ffmpeg -i *.flac -acodec libmp3lame *.mp3
# (optional: check whether there are any errors printed on the terminal)
sleep 60
How to get my goal?
bash shell-script ffmpeg
bash shell-script ffmpeg
edited Feb 12 '14 at 23:08
Gilles
545k12911071622
545k12911071622
asked Feb 12 '14 at 15:55
Kevin DongKevin Dong
4561613
4561613
2
did you try "FOR LOOP"?
– Danila Ladner
Feb 12 '14 at 15:57
@DanilaLadner Not yet. Thanks for the clue.
– Kevin Dong
Feb 12 '14 at 15:58
I wrote a script that does this, in parallel, and copies the tags over: http://tuxhelp.org/#flac-distiller
– user136310
Sep 29 '15 at 19:38
Sorry I forget it. After convert file name become file.avi.mp3 you can use : rename "s/.avi//g" *.avi.mp3 for remove .avi.
– user149335
Dec 29 '15 at 19:47
1
Give computer break after hard work.
– MeowMeow
Jul 13 '18 at 14:21
|
show 1 more comment
2
did you try "FOR LOOP"?
– Danila Ladner
Feb 12 '14 at 15:57
@DanilaLadner Not yet. Thanks for the clue.
– Kevin Dong
Feb 12 '14 at 15:58
I wrote a script that does this, in parallel, and copies the tags over: http://tuxhelp.org/#flac-distiller
– user136310
Sep 29 '15 at 19:38
Sorry I forget it. After convert file name become file.avi.mp3 you can use : rename "s/.avi//g" *.avi.mp3 for remove .avi.
– user149335
Dec 29 '15 at 19:47
1
Give computer break after hard work.
– MeowMeow
Jul 13 '18 at 14:21
2
2
did you try "FOR LOOP"?
– Danila Ladner
Feb 12 '14 at 15:57
did you try "FOR LOOP"?
– Danila Ladner
Feb 12 '14 at 15:57
@DanilaLadner Not yet. Thanks for the clue.
– Kevin Dong
Feb 12 '14 at 15:58
@DanilaLadner Not yet. Thanks for the clue.
– Kevin Dong
Feb 12 '14 at 15:58
I wrote a script that does this, in parallel, and copies the tags over: http://tuxhelp.org/#flac-distiller
– user136310
Sep 29 '15 at 19:38
I wrote a script that does this, in parallel, and copies the tags over: http://tuxhelp.org/#flac-distiller
– user136310
Sep 29 '15 at 19:38
Sorry I forget it. After convert file name become file.avi.mp3 you can use : rename "s/.avi//g" *.avi.mp3 for remove .avi.
– user149335
Dec 29 '15 at 19:47
Sorry I forget it. After convert file name become file.avi.mp3 you can use : rename "s/.avi//g" *.avi.mp3 for remove .avi.
– user149335
Dec 29 '15 at 19:47
1
1
Give computer break after hard work.
– MeowMeow
Jul 13 '18 at 14:21
Give computer break after hard work.
– MeowMeow
Jul 13 '18 at 14:21
|
show 1 more comment
14 Answers
14
active
oldest
votes
Try this:
for i in *.flac ; do
ffmpeg -i "$i" -acodec libmp3lame $(basename "$i/.flac").mp3
sleep 60
done
1
It isn't working with files containing space. How can I modify$(basename "$i/.flac")
to handle spaces?
– ppr
Jan 3 '16 at 15:39
1
@ppr Try putting this line just before thefor
loop: IFS=$'n'
– mkc
Jan 3 '16 at 19:14
5
I solved the space issue by changing$(basename "$i/.flac").mp3
to"$(basename "$i/.flac").mp3"
(putting quotes around it)
– MalcolmOcean
Sep 17 '16 at 20:02
add a comment |
A simple 1 liner solution:find -name "*.flac" -exec ffmpeg -i -acodec libmp3lame -ab 128k .mp3 ;
http://lewisdiamond.blogspot.ca/2012/01/converting-flac-to-mp3.html
Note that this will be applied recursively in the given directory. I.e. if you run this from your Music folder, it will convert all flacs from subfolders and produce a .mp3 next to it. You may also do it without ffmpeg by directly using flac and lame (i.e. read w/ flac, pipe to lame, output to a file .mp3), as shown in the link.
You can use-maxdepth 1
I think like in X Tian's answer to limit the recursiveness.
– user44370
Oct 24 '14 at 20:00
2
Yes you can. You could also use ls piped to xargs or a for loop. I'm just making the (possibly wrong) assumption that a recursive search is more along what the OP needed (i.e. change all the .flac from my music library).
– Lewis Diamond
Oct 24 '14 at 20:48
10
This command is great - however; You end up with files named *.flac.mp3. Using your command, I came up with this...find -name "*.flac" -exec bash -c 'ffmpeg -i "" -y -acodec libmp3lame -ab 128k "$0/.flac.mp3"' ;
– Shane
Oct 27 '15 at 2:54
1
Yes, as I explained in the blog, I like this aspect of adding the .mp3 because it tells me this files comes from a lossless source, which should be found somewhere on my hard drive.
– Lewis Diamond
Oct 28 '15 at 16:23
@Shane comment worked for me.
– Chaudhry Waqas
Feb 19 at 9:11
add a comment |
If you have some white spaces in the file names:
for a in *.flac; do
f="$a[@]/%flac/mp3"
ffmpeg -i "$a" -qscale:a 0 "$f"
done
I have a folder with a mixture of mp4 and wav files. How do I convert all of them into mp3? Thank you.
– kRazzy R
Jun 11 '18 at 14:55
add a comment |
I worked on @Ketan's answer using avconv, since ffmpeg doesn't work well over here.
for i in *.flac ; do
avconv -i "$i" "./mp3/$i".mp3
done
This converts flac
files in a folder into mp3
files and moves then to an existing "mp3" folder. Files will be named in the model "original_name.flac.mp3"
add a comment |
find . -maxdepth 1 -type f -name '*.flac' | while IFS= read -r f; do
ffmpeg -i "$f" -acodec libmp3lame "$( sed -e's/.flac/.mp3/g' <<< $f )"
done
1
sed expression needs an ending '
– Jaime M.
Aug 14 '15 at 16:15
add a comment |
I took everything I found here (and maybe on some other sites) and created a small tool to not only create mp3s of flacs recursively, but also preserve relative paths to create them elsewhere with multithread support.
oh, and yes, I see, I didn't use ffmpeg in that case, because my OSMC didn't provide packages for ffmpeg, only avconv, but since you're already here, I guess you know, it's "basically" the same - at least for the most important part. Just replace the command "avconv" with "ffmpeg". My first runs were with the ffmpeg bin and the exact same options.
I am by no means a bash hacker, but I managed it, as my first bashscript with the given demands, and maybe someone will benefit.
I am open for any suggestions from your side, but so far it works for me.
my script to spin up the 4 instances, one for each core, is like this:
#!/bin/bash
# this should be quite self-explanatory
for i in 1..4
do
echo "started instance no: $i"
/home/osmc/transform.sh . &
# sleeping time can be shorter, this is just so, that
# not all 4 processes will want to start with the same
# file, during runtime collisions should not become an issue
sleep 5
done
echo "all instances started"
And the worker script like this:
#!/bin/bash
# take care of spaces
IFS=$'n'
# my music folders, remote is the source, local the target dir
remote=/mnt/music/FLAC
local=/mnt/1tb/mp3
# for all flac files start loop
for i in $(find $remote -type f -iname '*.flac' );
do
## SET VARIABLES for PATHS and FILENAMES
## this might be able to be super short with sed and complex one-liner,
## but I s*ck at regex
fullfile=$i
# strip extension
filename="$i##*/"
# add new extension
filename="$filename%.*.mp3"
# get full dirname from inputfile
fulldir=$(dirname "$i")
# strip leading dirs from full input dir
# count the dirs, add two, then you're good.
reldir="$(echo $fulldir | cut -d'/' -f5-)"
# some subdirs in my collection even have a flac subdir, you might
# ignore this, it strips only if it exists
reldir=$reldir//flac
# combine target dir and relative dir
outdir="$local/$reldir"
# generate the full output filename for conversion
outfile="$outdir/$filename"
# create whole target directory - yes, I need it only once, but hey,
# it works, didn't want to start a if not exist statement... should I?
mkdir -p "$outdir"
# run conversion - finally... you may want or need to replace
# "avconv" with "ffmpeg"
avconv -n -nostats -loglevel info -i "$fullfile" -codec:a libmp3lame -qscale:a 0 "$outfile"
done
which can be found at
https://github.com/erdnuesse/flac-to-mp3
Regards,
Kay
welcome aboard, good effort. +1
– Alex Stragies
Jan 12 '18 at 18:00
add a comment |
Parallel FTW (no doubt you have more than one core - why not use them?):
ls *flac | while read f; do ffmpeg -i "$f" -acodec libmp3lame $f.mp3 & done
4
see why not parse ls and Why is using a shell loop to process text considered bad practice?
– Evgeny Vereshchagin
Jul 27 '15 at 21:24
add a comment |
For example, if you have multiple avi files:
ls *.avi | xargs -I ffmpeg -i .mp3
add a comment |
If it can help ....
I've written a small bash script to do this ....
You need to have ffmpeg / flac installed.
How it works:
It takes 2 arguments :
- The folder of your music library (flac/ogg/mp3 ...)
- The destination folder (you need to create it before).
It produce :
- An exact copy from the source folder into the destination folder, with:
- the non flac files copied into.
- the flac files transformed to mp3 ( VBR high quality)
- A run.sh file with the commands to convert the flac files (this script is executed automatically).
#!/bin/bash
FLAC_PATH=$1
CONV_PATH=$2
DEBUG=0;
function usage
echo "";
echo " This script convert all flac files from a folder to mp3 files to a second folder";
echo "";
echo " Usage :";
echo " ./conv.sh Source Folder Destination Folder";
echo " note : booth folder must exist before starting this script";
echo " files other than flac are copied to the destination folder";
echo "";
if [ ! -d "$2" ]; then
echo "";
echo " ERROR : [$2] is not a directory.";
usage
exit 1
fi;
if [ ! -d "$2" ]; then
echo "";
echo " ERROR : [$2] is not a directory.";
usage
exit 1
fi;
COMMANDS="run.sh"
echo "" > run.sh
echo " convert from $FLAC_PATH to $CONV_PATH ";
find "$FLAC_PATH" -type f |while read myFile; do
SRC_DIR=$myFile%/*
SRC_FILE=$myFile##*/
DST_DIR=$CONV_PATH/$SRC_DIR
mkdir -p "$DST_DIR"
# TEST if the file is a flac ....
metaflac --show-md5sum "$myFile" 2>/dev/null 1>/dev/null
if [ $? -eq 0 ]; then
echo -n " *** $myFile [FLAC !] : "
DST_FILE=$myFile%.*
OUT_PATH="$DST_DIR/$( echo $SRC_FILE | sed -e 's/.flac$/.mp3/')"
if [ $DEBUG == 1 ]; then
echo " SRC = $myFile";
echo " OUT = $OUT_PATH"
fi;
if [ -f "$OUT_PATH" ]; then
echo " exist, do nothing !";
else
echo " add to compress list !";
echo "ffmpeg -y -i "$myFile" -codec:a libmp3lame -q:a 0 -map_metadata 0 -id3v2_version 3 "$OUT_PATH" " >> $COMMANDS
fi;
else
echo -n " *** $SRC_FILE [NOT FLAC] : "
if [ -f "$CONV_PATH/$myFile" ]; then
echo " exist, do nothing !"
else
echo " copy."
cp "$myFile" "$CONV_PATH/$myFile"
fi
fi
done;
echo " And now, CONVERT THE FLAC's!!! "
sh run.sh
add a comment |
To recursively convert in mp3 all the flac or wav files in nested folders, I used this command:
find '~/Music/' -iname '*.flac' , -iname '*.wav' -exec bash -c 'D=$(dirname ""); B=$(basename ""); mkdir "$D/mp3/"; ffmpeg -i "" -ab 320k -map_metadata 0 -id3v2_version 3 -acodec libmp3lame "$D/mp3/$B%.*.mp3"' ;
It will create a folder named "mp3" inside the one with flac or wav files and, inside the mp3 folder, it will save relative mp3 files with a bitrate of 320kbps, without keeping the old file extension in the name.
add a comment |
GNU Parallel is make for these kind of tasks:
# change to the home directory
cd ~/music
# convert all *.flac files
parallel ffmpeg -i -acodec libmp3lame ..mp3 ::: *.flac
# (optional: check whether there are any errors printed on the terminal)
sleep 60
It will run the jobs in parallel (one job per cpu core) and make sure the output on the terminal is not mixed together.
add a comment |
The file name is "wav2mp3"
#!/bin/sh
# put the script to /usr/local/sbin
EXT_IN=$1
QUALITY=$2
if [ "$EXT_IN" = "" -o "$QUALITY" = "" ]; then
printf "Usage: wav2mp3 <in_file_ext> <quality> ne.g. wav2mp3 wav 2n"
exit 1
fi
#String delimeter
SAVEIFS=$IFS
IFS='
'
# List of the files in directory lower than current to array
FILES_LIST=`find . -type f -name "*.$EXT_IN"`
for FILE in $FILES_LIST; do
echo $FILE
PREFIX=`echo $FILE | awk -F . 'OFS="." $NF="" 1' | sed 's/.$//'`
echo $PREFIX
ffmpeg -i $FILE -codec:a libmp3lame -qscale:a $QUALITY $PREFIX.mp3
done
New contributor
Consider using shellcheck.net. It has quite a few suggestions regarding your script.
– llogan
2 days ago
add a comment |
for a in *.flac
do
OUTF=echo "$a" | sed s/.flac$/.mp3/g
ffmpeg -i "$a" -acodec libmp3lame "$OUTF"
done
1
welcome to U&L, your answer hardly add anything to @Ketan accepted answer four years ago.
– Archemar
Dec 29 '17 at 8:45
add a comment |
I realize this comes quite late, but for memory, see my script "batchaudiocvt" on sourceforge. It is a (quite large) shell script designed for efficient mass conversion of audio files, between many formats. In particular, it makes its best to convert the usual tags.
This question is about how to handle the loop in the shell. The user already knows the command they want to use to do the conversion.
– G-Man
Oct 31 '18 at 23:51
Welcome to Stack Exchange. Are you Eric Dujardin? If so, it would be good to use the contact form and select ‘‘I need to merge user profiles’’ to have your accounts merged.
– Scott
Nov 1 '18 at 2:19
Sorry, I was just trying to help with the stated goal of converting the files. Anyway the provided script may be worth a read.
– Eric Dujardin
Nov 1 '18 at 8:18
add a comment |
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "106"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f114908%2fbash-script-to-convert-all-flac-to-mp3-with-ffmpeg%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
14 Answers
14
active
oldest
votes
14 Answers
14
active
oldest
votes
active
oldest
votes
active
oldest
votes
Try this:
for i in *.flac ; do
ffmpeg -i "$i" -acodec libmp3lame $(basename "$i/.flac").mp3
sleep 60
done
1
It isn't working with files containing space. How can I modify$(basename "$i/.flac")
to handle spaces?
– ppr
Jan 3 '16 at 15:39
1
@ppr Try putting this line just before thefor
loop: IFS=$'n'
– mkc
Jan 3 '16 at 19:14
5
I solved the space issue by changing$(basename "$i/.flac").mp3
to"$(basename "$i/.flac").mp3"
(putting quotes around it)
– MalcolmOcean
Sep 17 '16 at 20:02
add a comment |
Try this:
for i in *.flac ; do
ffmpeg -i "$i" -acodec libmp3lame $(basename "$i/.flac").mp3
sleep 60
done
1
It isn't working with files containing space. How can I modify$(basename "$i/.flac")
to handle spaces?
– ppr
Jan 3 '16 at 15:39
1
@ppr Try putting this line just before thefor
loop: IFS=$'n'
– mkc
Jan 3 '16 at 19:14
5
I solved the space issue by changing$(basename "$i/.flac").mp3
to"$(basename "$i/.flac").mp3"
(putting quotes around it)
– MalcolmOcean
Sep 17 '16 at 20:02
add a comment |
Try this:
for i in *.flac ; do
ffmpeg -i "$i" -acodec libmp3lame $(basename "$i/.flac").mp3
sleep 60
done
Try this:
for i in *.flac ; do
ffmpeg -i "$i" -acodec libmp3lame $(basename "$i/.flac").mp3
sleep 60
done
edited Aug 23 '15 at 11:54
chaos
36k977120
36k977120
answered Feb 12 '14 at 16:27
mkcmkc
5,96842944
5,96842944
1
It isn't working with files containing space. How can I modify$(basename "$i/.flac")
to handle spaces?
– ppr
Jan 3 '16 at 15:39
1
@ppr Try putting this line just before thefor
loop: IFS=$'n'
– mkc
Jan 3 '16 at 19:14
5
I solved the space issue by changing$(basename "$i/.flac").mp3
to"$(basename "$i/.flac").mp3"
(putting quotes around it)
– MalcolmOcean
Sep 17 '16 at 20:02
add a comment |
1
It isn't working with files containing space. How can I modify$(basename "$i/.flac")
to handle spaces?
– ppr
Jan 3 '16 at 15:39
1
@ppr Try putting this line just before thefor
loop: IFS=$'n'
– mkc
Jan 3 '16 at 19:14
5
I solved the space issue by changing$(basename "$i/.flac").mp3
to"$(basename "$i/.flac").mp3"
(putting quotes around it)
– MalcolmOcean
Sep 17 '16 at 20:02
1
1
It isn't working with files containing space. How can I modify
$(basename "$i/.flac")
to handle spaces?– ppr
Jan 3 '16 at 15:39
It isn't working with files containing space. How can I modify
$(basename "$i/.flac")
to handle spaces?– ppr
Jan 3 '16 at 15:39
1
1
@ppr Try putting this line just before the
for
loop: IFS=$'n'– mkc
Jan 3 '16 at 19:14
@ppr Try putting this line just before the
for
loop: IFS=$'n'– mkc
Jan 3 '16 at 19:14
5
5
I solved the space issue by changing
$(basename "$i/.flac").mp3
to "$(basename "$i/.flac").mp3"
(putting quotes around it)– MalcolmOcean
Sep 17 '16 at 20:02
I solved the space issue by changing
$(basename "$i/.flac").mp3
to "$(basename "$i/.flac").mp3"
(putting quotes around it)– MalcolmOcean
Sep 17 '16 at 20:02
add a comment |
A simple 1 liner solution:find -name "*.flac" -exec ffmpeg -i -acodec libmp3lame -ab 128k .mp3 ;
http://lewisdiamond.blogspot.ca/2012/01/converting-flac-to-mp3.html
Note that this will be applied recursively in the given directory. I.e. if you run this from your Music folder, it will convert all flacs from subfolders and produce a .mp3 next to it. You may also do it without ffmpeg by directly using flac and lame (i.e. read w/ flac, pipe to lame, output to a file .mp3), as shown in the link.
You can use-maxdepth 1
I think like in X Tian's answer to limit the recursiveness.
– user44370
Oct 24 '14 at 20:00
2
Yes you can. You could also use ls piped to xargs or a for loop. I'm just making the (possibly wrong) assumption that a recursive search is more along what the OP needed (i.e. change all the .flac from my music library).
– Lewis Diamond
Oct 24 '14 at 20:48
10
This command is great - however; You end up with files named *.flac.mp3. Using your command, I came up with this...find -name "*.flac" -exec bash -c 'ffmpeg -i "" -y -acodec libmp3lame -ab 128k "$0/.flac.mp3"' ;
– Shane
Oct 27 '15 at 2:54
1
Yes, as I explained in the blog, I like this aspect of adding the .mp3 because it tells me this files comes from a lossless source, which should be found somewhere on my hard drive.
– Lewis Diamond
Oct 28 '15 at 16:23
@Shane comment worked for me.
– Chaudhry Waqas
Feb 19 at 9:11
add a comment |
A simple 1 liner solution:find -name "*.flac" -exec ffmpeg -i -acodec libmp3lame -ab 128k .mp3 ;
http://lewisdiamond.blogspot.ca/2012/01/converting-flac-to-mp3.html
Note that this will be applied recursively in the given directory. I.e. if you run this from your Music folder, it will convert all flacs from subfolders and produce a .mp3 next to it. You may also do it without ffmpeg by directly using flac and lame (i.e. read w/ flac, pipe to lame, output to a file .mp3), as shown in the link.
You can use-maxdepth 1
I think like in X Tian's answer to limit the recursiveness.
– user44370
Oct 24 '14 at 20:00
2
Yes you can. You could also use ls piped to xargs or a for loop. I'm just making the (possibly wrong) assumption that a recursive search is more along what the OP needed (i.e. change all the .flac from my music library).
– Lewis Diamond
Oct 24 '14 at 20:48
10
This command is great - however; You end up with files named *.flac.mp3. Using your command, I came up with this...find -name "*.flac" -exec bash -c 'ffmpeg -i "" -y -acodec libmp3lame -ab 128k "$0/.flac.mp3"' ;
– Shane
Oct 27 '15 at 2:54
1
Yes, as I explained in the blog, I like this aspect of adding the .mp3 because it tells me this files comes from a lossless source, which should be found somewhere on my hard drive.
– Lewis Diamond
Oct 28 '15 at 16:23
@Shane comment worked for me.
– Chaudhry Waqas
Feb 19 at 9:11
add a comment |
A simple 1 liner solution:find -name "*.flac" -exec ffmpeg -i -acodec libmp3lame -ab 128k .mp3 ;
http://lewisdiamond.blogspot.ca/2012/01/converting-flac-to-mp3.html
Note that this will be applied recursively in the given directory. I.e. if you run this from your Music folder, it will convert all flacs from subfolders and produce a .mp3 next to it. You may also do it without ffmpeg by directly using flac and lame (i.e. read w/ flac, pipe to lame, output to a file .mp3), as shown in the link.
A simple 1 liner solution:find -name "*.flac" -exec ffmpeg -i -acodec libmp3lame -ab 128k .mp3 ;
http://lewisdiamond.blogspot.ca/2012/01/converting-flac-to-mp3.html
Note that this will be applied recursively in the given directory. I.e. if you run this from your Music folder, it will convert all flacs from subfolders and produce a .mp3 next to it. You may also do it without ffmpeg by directly using flac and lame (i.e. read w/ flac, pipe to lame, output to a file .mp3), as shown in the link.
edited Oct 24 '14 at 19:05
answered Oct 24 '14 at 18:11
Lewis DiamondLewis Diamond
51144
51144
You can use-maxdepth 1
I think like in X Tian's answer to limit the recursiveness.
– user44370
Oct 24 '14 at 20:00
2
Yes you can. You could also use ls piped to xargs or a for loop. I'm just making the (possibly wrong) assumption that a recursive search is more along what the OP needed (i.e. change all the .flac from my music library).
– Lewis Diamond
Oct 24 '14 at 20:48
10
This command is great - however; You end up with files named *.flac.mp3. Using your command, I came up with this...find -name "*.flac" -exec bash -c 'ffmpeg -i "" -y -acodec libmp3lame -ab 128k "$0/.flac.mp3"' ;
– Shane
Oct 27 '15 at 2:54
1
Yes, as I explained in the blog, I like this aspect of adding the .mp3 because it tells me this files comes from a lossless source, which should be found somewhere on my hard drive.
– Lewis Diamond
Oct 28 '15 at 16:23
@Shane comment worked for me.
– Chaudhry Waqas
Feb 19 at 9:11
add a comment |
You can use-maxdepth 1
I think like in X Tian's answer to limit the recursiveness.
– user44370
Oct 24 '14 at 20:00
2
Yes you can. You could also use ls piped to xargs or a for loop. I'm just making the (possibly wrong) assumption that a recursive search is more along what the OP needed (i.e. change all the .flac from my music library).
– Lewis Diamond
Oct 24 '14 at 20:48
10
This command is great - however; You end up with files named *.flac.mp3. Using your command, I came up with this...find -name "*.flac" -exec bash -c 'ffmpeg -i "" -y -acodec libmp3lame -ab 128k "$0/.flac.mp3"' ;
– Shane
Oct 27 '15 at 2:54
1
Yes, as I explained in the blog, I like this aspect of adding the .mp3 because it tells me this files comes from a lossless source, which should be found somewhere on my hard drive.
– Lewis Diamond
Oct 28 '15 at 16:23
@Shane comment worked for me.
– Chaudhry Waqas
Feb 19 at 9:11
You can use
-maxdepth 1
I think like in X Tian's answer to limit the recursiveness.– user44370
Oct 24 '14 at 20:00
You can use
-maxdepth 1
I think like in X Tian's answer to limit the recursiveness.– user44370
Oct 24 '14 at 20:00
2
2
Yes you can. You could also use ls piped to xargs or a for loop. I'm just making the (possibly wrong) assumption that a recursive search is more along what the OP needed (i.e. change all the .flac from my music library).
– Lewis Diamond
Oct 24 '14 at 20:48
Yes you can. You could also use ls piped to xargs or a for loop. I'm just making the (possibly wrong) assumption that a recursive search is more along what the OP needed (i.e. change all the .flac from my music library).
– Lewis Diamond
Oct 24 '14 at 20:48
10
10
This command is great - however; You end up with files named *.flac.mp3. Using your command, I came up with this...
find -name "*.flac" -exec bash -c 'ffmpeg -i "" -y -acodec libmp3lame -ab 128k "$0/.flac.mp3"' ;
– Shane
Oct 27 '15 at 2:54
This command is great - however; You end up with files named *.flac.mp3. Using your command, I came up with this...
find -name "*.flac" -exec bash -c 'ffmpeg -i "" -y -acodec libmp3lame -ab 128k "$0/.flac.mp3"' ;
– Shane
Oct 27 '15 at 2:54
1
1
Yes, as I explained in the blog, I like this aspect of adding the .mp3 because it tells me this files comes from a lossless source, which should be found somewhere on my hard drive.
– Lewis Diamond
Oct 28 '15 at 16:23
Yes, as I explained in the blog, I like this aspect of adding the .mp3 because it tells me this files comes from a lossless source, which should be found somewhere on my hard drive.
– Lewis Diamond
Oct 28 '15 at 16:23
@Shane comment worked for me.
– Chaudhry Waqas
Feb 19 at 9:11
@Shane comment worked for me.
– Chaudhry Waqas
Feb 19 at 9:11
add a comment |
If you have some white spaces in the file names:
for a in *.flac; do
f="$a[@]/%flac/mp3"
ffmpeg -i "$a" -qscale:a 0 "$f"
done
I have a folder with a mixture of mp4 and wav files. How do I convert all of them into mp3? Thank you.
– kRazzy R
Jun 11 '18 at 14:55
add a comment |
If you have some white spaces in the file names:
for a in *.flac; do
f="$a[@]/%flac/mp3"
ffmpeg -i "$a" -qscale:a 0 "$f"
done
I have a folder with a mixture of mp4 and wav files. How do I convert all of them into mp3? Thank you.
– kRazzy R
Jun 11 '18 at 14:55
add a comment |
If you have some white spaces in the file names:
for a in *.flac; do
f="$a[@]/%flac/mp3"
ffmpeg -i "$a" -qscale:a 0 "$f"
done
If you have some white spaces in the file names:
for a in *.flac; do
f="$a[@]/%flac/mp3"
ffmpeg -i "$a" -qscale:a 0 "$f"
done
edited Dec 29 '14 at 6:14
HalosGhost
3,78392236
3,78392236
answered Dec 29 '14 at 5:36
Daeseong KimDaeseong Kim
8111
8111
I have a folder with a mixture of mp4 and wav files. How do I convert all of them into mp3? Thank you.
– kRazzy R
Jun 11 '18 at 14:55
add a comment |
I have a folder with a mixture of mp4 and wav files. How do I convert all of them into mp3? Thank you.
– kRazzy R
Jun 11 '18 at 14:55
I have a folder with a mixture of mp4 and wav files. How do I convert all of them into mp3? Thank you.
– kRazzy R
Jun 11 '18 at 14:55
I have a folder with a mixture of mp4 and wav files. How do I convert all of them into mp3? Thank you.
– kRazzy R
Jun 11 '18 at 14:55
add a comment |
I worked on @Ketan's answer using avconv, since ffmpeg doesn't work well over here.
for i in *.flac ; do
avconv -i "$i" "./mp3/$i".mp3
done
This converts flac
files in a folder into mp3
files and moves then to an existing "mp3" folder. Files will be named in the model "original_name.flac.mp3"
add a comment |
I worked on @Ketan's answer using avconv, since ffmpeg doesn't work well over here.
for i in *.flac ; do
avconv -i "$i" "./mp3/$i".mp3
done
This converts flac
files in a folder into mp3
files and moves then to an existing "mp3" folder. Files will be named in the model "original_name.flac.mp3"
add a comment |
I worked on @Ketan's answer using avconv, since ffmpeg doesn't work well over here.
for i in *.flac ; do
avconv -i "$i" "./mp3/$i".mp3
done
This converts flac
files in a folder into mp3
files and moves then to an existing "mp3" folder. Files will be named in the model "original_name.flac.mp3"
I worked on @Ketan's answer using avconv, since ffmpeg doesn't work well over here.
for i in *.flac ; do
avconv -i "$i" "./mp3/$i".mp3
done
This converts flac
files in a folder into mp3
files and moves then to an existing "mp3" folder. Files will be named in the model "original_name.flac.mp3"
answered Jul 7 '15 at 13:28
DanBCDanBC
112
112
add a comment |
add a comment |
find . -maxdepth 1 -type f -name '*.flac' | while IFS= read -r f; do
ffmpeg -i "$f" -acodec libmp3lame "$( sed -e's/.flac/.mp3/g' <<< $f )"
done
1
sed expression needs an ending '
– Jaime M.
Aug 14 '15 at 16:15
add a comment |
find . -maxdepth 1 -type f -name '*.flac' | while IFS= read -r f; do
ffmpeg -i "$f" -acodec libmp3lame "$( sed -e's/.flac/.mp3/g' <<< $f )"
done
1
sed expression needs an ending '
– Jaime M.
Aug 14 '15 at 16:15
add a comment |
find . -maxdepth 1 -type f -name '*.flac' | while IFS= read -r f; do
ffmpeg -i "$f" -acodec libmp3lame "$( sed -e's/.flac/.mp3/g' <<< $f )"
done
find . -maxdepth 1 -type f -name '*.flac' | while IFS= read -r f; do
ffmpeg -i "$f" -acodec libmp3lame "$( sed -e's/.flac/.mp3/g' <<< $f )"
done
edited Aug 16 '15 at 10:38
answered Feb 12 '14 at 16:28
X TianX Tian
7,83112237
7,83112237
1
sed expression needs an ending '
– Jaime M.
Aug 14 '15 at 16:15
add a comment |
1
sed expression needs an ending '
– Jaime M.
Aug 14 '15 at 16:15
1
1
sed expression needs an ending '
– Jaime M.
Aug 14 '15 at 16:15
sed expression needs an ending '
– Jaime M.
Aug 14 '15 at 16:15
add a comment |
I took everything I found here (and maybe on some other sites) and created a small tool to not only create mp3s of flacs recursively, but also preserve relative paths to create them elsewhere with multithread support.
oh, and yes, I see, I didn't use ffmpeg in that case, because my OSMC didn't provide packages for ffmpeg, only avconv, but since you're already here, I guess you know, it's "basically" the same - at least for the most important part. Just replace the command "avconv" with "ffmpeg". My first runs were with the ffmpeg bin and the exact same options.
I am by no means a bash hacker, but I managed it, as my first bashscript with the given demands, and maybe someone will benefit.
I am open for any suggestions from your side, but so far it works for me.
my script to spin up the 4 instances, one for each core, is like this:
#!/bin/bash
# this should be quite self-explanatory
for i in 1..4
do
echo "started instance no: $i"
/home/osmc/transform.sh . &
# sleeping time can be shorter, this is just so, that
# not all 4 processes will want to start with the same
# file, during runtime collisions should not become an issue
sleep 5
done
echo "all instances started"
And the worker script like this:
#!/bin/bash
# take care of spaces
IFS=$'n'
# my music folders, remote is the source, local the target dir
remote=/mnt/music/FLAC
local=/mnt/1tb/mp3
# for all flac files start loop
for i in $(find $remote -type f -iname '*.flac' );
do
## SET VARIABLES for PATHS and FILENAMES
## this might be able to be super short with sed and complex one-liner,
## but I s*ck at regex
fullfile=$i
# strip extension
filename="$i##*/"
# add new extension
filename="$filename%.*.mp3"
# get full dirname from inputfile
fulldir=$(dirname "$i")
# strip leading dirs from full input dir
# count the dirs, add two, then you're good.
reldir="$(echo $fulldir | cut -d'/' -f5-)"
# some subdirs in my collection even have a flac subdir, you might
# ignore this, it strips only if it exists
reldir=$reldir//flac
# combine target dir and relative dir
outdir="$local/$reldir"
# generate the full output filename for conversion
outfile="$outdir/$filename"
# create whole target directory - yes, I need it only once, but hey,
# it works, didn't want to start a if not exist statement... should I?
mkdir -p "$outdir"
# run conversion - finally... you may want or need to replace
# "avconv" with "ffmpeg"
avconv -n -nostats -loglevel info -i "$fullfile" -codec:a libmp3lame -qscale:a 0 "$outfile"
done
which can be found at
https://github.com/erdnuesse/flac-to-mp3
Regards,
Kay
welcome aboard, good effort. +1
– Alex Stragies
Jan 12 '18 at 18:00
add a comment |
I took everything I found here (and maybe on some other sites) and created a small tool to not only create mp3s of flacs recursively, but also preserve relative paths to create them elsewhere with multithread support.
oh, and yes, I see, I didn't use ffmpeg in that case, because my OSMC didn't provide packages for ffmpeg, only avconv, but since you're already here, I guess you know, it's "basically" the same - at least for the most important part. Just replace the command "avconv" with "ffmpeg". My first runs were with the ffmpeg bin and the exact same options.
I am by no means a bash hacker, but I managed it, as my first bashscript with the given demands, and maybe someone will benefit.
I am open for any suggestions from your side, but so far it works for me.
my script to spin up the 4 instances, one for each core, is like this:
#!/bin/bash
# this should be quite self-explanatory
for i in 1..4
do
echo "started instance no: $i"
/home/osmc/transform.sh . &
# sleeping time can be shorter, this is just so, that
# not all 4 processes will want to start with the same
# file, during runtime collisions should not become an issue
sleep 5
done
echo "all instances started"
And the worker script like this:
#!/bin/bash
# take care of spaces
IFS=$'n'
# my music folders, remote is the source, local the target dir
remote=/mnt/music/FLAC
local=/mnt/1tb/mp3
# for all flac files start loop
for i in $(find $remote -type f -iname '*.flac' );
do
## SET VARIABLES for PATHS and FILENAMES
## this might be able to be super short with sed and complex one-liner,
## but I s*ck at regex
fullfile=$i
# strip extension
filename="$i##*/"
# add new extension
filename="$filename%.*.mp3"
# get full dirname from inputfile
fulldir=$(dirname "$i")
# strip leading dirs from full input dir
# count the dirs, add two, then you're good.
reldir="$(echo $fulldir | cut -d'/' -f5-)"
# some subdirs in my collection even have a flac subdir, you might
# ignore this, it strips only if it exists
reldir=$reldir//flac
# combine target dir and relative dir
outdir="$local/$reldir"
# generate the full output filename for conversion
outfile="$outdir/$filename"
# create whole target directory - yes, I need it only once, but hey,
# it works, didn't want to start a if not exist statement... should I?
mkdir -p "$outdir"
# run conversion - finally... you may want or need to replace
# "avconv" with "ffmpeg"
avconv -n -nostats -loglevel info -i "$fullfile" -codec:a libmp3lame -qscale:a 0 "$outfile"
done
which can be found at
https://github.com/erdnuesse/flac-to-mp3
Regards,
Kay
welcome aboard, good effort. +1
– Alex Stragies
Jan 12 '18 at 18:00
add a comment |
I took everything I found here (and maybe on some other sites) and created a small tool to not only create mp3s of flacs recursively, but also preserve relative paths to create them elsewhere with multithread support.
oh, and yes, I see, I didn't use ffmpeg in that case, because my OSMC didn't provide packages for ffmpeg, only avconv, but since you're already here, I guess you know, it's "basically" the same - at least for the most important part. Just replace the command "avconv" with "ffmpeg". My first runs were with the ffmpeg bin and the exact same options.
I am by no means a bash hacker, but I managed it, as my first bashscript with the given demands, and maybe someone will benefit.
I am open for any suggestions from your side, but so far it works for me.
my script to spin up the 4 instances, one for each core, is like this:
#!/bin/bash
# this should be quite self-explanatory
for i in 1..4
do
echo "started instance no: $i"
/home/osmc/transform.sh . &
# sleeping time can be shorter, this is just so, that
# not all 4 processes will want to start with the same
# file, during runtime collisions should not become an issue
sleep 5
done
echo "all instances started"
And the worker script like this:
#!/bin/bash
# take care of spaces
IFS=$'n'
# my music folders, remote is the source, local the target dir
remote=/mnt/music/FLAC
local=/mnt/1tb/mp3
# for all flac files start loop
for i in $(find $remote -type f -iname '*.flac' );
do
## SET VARIABLES for PATHS and FILENAMES
## this might be able to be super short with sed and complex one-liner,
## but I s*ck at regex
fullfile=$i
# strip extension
filename="$i##*/"
# add new extension
filename="$filename%.*.mp3"
# get full dirname from inputfile
fulldir=$(dirname "$i")
# strip leading dirs from full input dir
# count the dirs, add two, then you're good.
reldir="$(echo $fulldir | cut -d'/' -f5-)"
# some subdirs in my collection even have a flac subdir, you might
# ignore this, it strips only if it exists
reldir=$reldir//flac
# combine target dir and relative dir
outdir="$local/$reldir"
# generate the full output filename for conversion
outfile="$outdir/$filename"
# create whole target directory - yes, I need it only once, but hey,
# it works, didn't want to start a if not exist statement... should I?
mkdir -p "$outdir"
# run conversion - finally... you may want or need to replace
# "avconv" with "ffmpeg"
avconv -n -nostats -loglevel info -i "$fullfile" -codec:a libmp3lame -qscale:a 0 "$outfile"
done
which can be found at
https://github.com/erdnuesse/flac-to-mp3
Regards,
Kay
I took everything I found here (and maybe on some other sites) and created a small tool to not only create mp3s of flacs recursively, but also preserve relative paths to create them elsewhere with multithread support.
oh, and yes, I see, I didn't use ffmpeg in that case, because my OSMC didn't provide packages for ffmpeg, only avconv, but since you're already here, I guess you know, it's "basically" the same - at least for the most important part. Just replace the command "avconv" with "ffmpeg". My first runs were with the ffmpeg bin and the exact same options.
I am by no means a bash hacker, but I managed it, as my first bashscript with the given demands, and maybe someone will benefit.
I am open for any suggestions from your side, but so far it works for me.
my script to spin up the 4 instances, one for each core, is like this:
#!/bin/bash
# this should be quite self-explanatory
for i in 1..4
do
echo "started instance no: $i"
/home/osmc/transform.sh . &
# sleeping time can be shorter, this is just so, that
# not all 4 processes will want to start with the same
# file, during runtime collisions should not become an issue
sleep 5
done
echo "all instances started"
And the worker script like this:
#!/bin/bash
# take care of spaces
IFS=$'n'
# my music folders, remote is the source, local the target dir
remote=/mnt/music/FLAC
local=/mnt/1tb/mp3
# for all flac files start loop
for i in $(find $remote -type f -iname '*.flac' );
do
## SET VARIABLES for PATHS and FILENAMES
## this might be able to be super short with sed and complex one-liner,
## but I s*ck at regex
fullfile=$i
# strip extension
filename="$i##*/"
# add new extension
filename="$filename%.*.mp3"
# get full dirname from inputfile
fulldir=$(dirname "$i")
# strip leading dirs from full input dir
# count the dirs, add two, then you're good.
reldir="$(echo $fulldir | cut -d'/' -f5-)"
# some subdirs in my collection even have a flac subdir, you might
# ignore this, it strips only if it exists
reldir=$reldir//flac
# combine target dir and relative dir
outdir="$local/$reldir"
# generate the full output filename for conversion
outfile="$outdir/$filename"
# create whole target directory - yes, I need it only once, but hey,
# it works, didn't want to start a if not exist statement... should I?
mkdir -p "$outdir"
# run conversion - finally... you may want or need to replace
# "avconv" with "ffmpeg"
avconv -n -nostats -loglevel info -i "$fullfile" -codec:a libmp3lame -qscale:a 0 "$outfile"
done
which can be found at
https://github.com/erdnuesse/flac-to-mp3
Regards,
Kay
edited Jan 12 '18 at 21:53
answered Jan 12 '18 at 17:59
Kay UrbachKay Urbach
112
112
welcome aboard, good effort. +1
– Alex Stragies
Jan 12 '18 at 18:00
add a comment |
welcome aboard, good effort. +1
– Alex Stragies
Jan 12 '18 at 18:00
welcome aboard, good effort. +1
– Alex Stragies
Jan 12 '18 at 18:00
welcome aboard, good effort. +1
– Alex Stragies
Jan 12 '18 at 18:00
add a comment |
Parallel FTW (no doubt you have more than one core - why not use them?):
ls *flac | while read f; do ffmpeg -i "$f" -acodec libmp3lame $f.mp3 & done
4
see why not parse ls and Why is using a shell loop to process text considered bad practice?
– Evgeny Vereshchagin
Jul 27 '15 at 21:24
add a comment |
Parallel FTW (no doubt you have more than one core - why not use them?):
ls *flac | while read f; do ffmpeg -i "$f" -acodec libmp3lame $f.mp3 & done
4
see why not parse ls and Why is using a shell loop to process text considered bad practice?
– Evgeny Vereshchagin
Jul 27 '15 at 21:24
add a comment |
Parallel FTW (no doubt you have more than one core - why not use them?):
ls *flac | while read f; do ffmpeg -i "$f" -acodec libmp3lame $f.mp3 & done
Parallel FTW (no doubt you have more than one core - why not use them?):
ls *flac | while read f; do ffmpeg -i "$f" -acodec libmp3lame $f.mp3 & done
answered Jul 27 '15 at 21:04
hoffmanchoffmanc
1092
1092
4
see why not parse ls and Why is using a shell loop to process text considered bad practice?
– Evgeny Vereshchagin
Jul 27 '15 at 21:24
add a comment |
4
see why not parse ls and Why is using a shell loop to process text considered bad practice?
– Evgeny Vereshchagin
Jul 27 '15 at 21:24
4
4
see why not parse ls and Why is using a shell loop to process text considered bad practice?
– Evgeny Vereshchagin
Jul 27 '15 at 21:24
see why not parse ls and Why is using a shell loop to process text considered bad practice?
– Evgeny Vereshchagin
Jul 27 '15 at 21:24
add a comment |
For example, if you have multiple avi files:
ls *.avi | xargs -I ffmpeg -i .mp3
add a comment |
For example, if you have multiple avi files:
ls *.avi | xargs -I ffmpeg -i .mp3
add a comment |
For example, if you have multiple avi files:
ls *.avi | xargs -I ffmpeg -i .mp3
For example, if you have multiple avi files:
ls *.avi | xargs -I ffmpeg -i .mp3
edited Dec 29 '15 at 20:00
Jeff Schaller♦
44.4k1162143
44.4k1162143
answered Dec 29 '15 at 19:39
K-FIVEK-FIVE
1
1
add a comment |
add a comment |
If it can help ....
I've written a small bash script to do this ....
You need to have ffmpeg / flac installed.
How it works:
It takes 2 arguments :
- The folder of your music library (flac/ogg/mp3 ...)
- The destination folder (you need to create it before).
It produce :
- An exact copy from the source folder into the destination folder, with:
- the non flac files copied into.
- the flac files transformed to mp3 ( VBR high quality)
- A run.sh file with the commands to convert the flac files (this script is executed automatically).
#!/bin/bash
FLAC_PATH=$1
CONV_PATH=$2
DEBUG=0;
function usage
echo "";
echo " This script convert all flac files from a folder to mp3 files to a second folder";
echo "";
echo " Usage :";
echo " ./conv.sh Source Folder Destination Folder";
echo " note : booth folder must exist before starting this script";
echo " files other than flac are copied to the destination folder";
echo "";
if [ ! -d "$2" ]; then
echo "";
echo " ERROR : [$2] is not a directory.";
usage
exit 1
fi;
if [ ! -d "$2" ]; then
echo "";
echo " ERROR : [$2] is not a directory.";
usage
exit 1
fi;
COMMANDS="run.sh"
echo "" > run.sh
echo " convert from $FLAC_PATH to $CONV_PATH ";
find "$FLAC_PATH" -type f |while read myFile; do
SRC_DIR=$myFile%/*
SRC_FILE=$myFile##*/
DST_DIR=$CONV_PATH/$SRC_DIR
mkdir -p "$DST_DIR"
# TEST if the file is a flac ....
metaflac --show-md5sum "$myFile" 2>/dev/null 1>/dev/null
if [ $? -eq 0 ]; then
echo -n " *** $myFile [FLAC !] : "
DST_FILE=$myFile%.*
OUT_PATH="$DST_DIR/$( echo $SRC_FILE | sed -e 's/.flac$/.mp3/')"
if [ $DEBUG == 1 ]; then
echo " SRC = $myFile";
echo " OUT = $OUT_PATH"
fi;
if [ -f "$OUT_PATH" ]; then
echo " exist, do nothing !";
else
echo " add to compress list !";
echo "ffmpeg -y -i "$myFile" -codec:a libmp3lame -q:a 0 -map_metadata 0 -id3v2_version 3 "$OUT_PATH" " >> $COMMANDS
fi;
else
echo -n " *** $SRC_FILE [NOT FLAC] : "
if [ -f "$CONV_PATH/$myFile" ]; then
echo " exist, do nothing !"
else
echo " copy."
cp "$myFile" "$CONV_PATH/$myFile"
fi
fi
done;
echo " And now, CONVERT THE FLAC's!!! "
sh run.sh
add a comment |
If it can help ....
I've written a small bash script to do this ....
You need to have ffmpeg / flac installed.
How it works:
It takes 2 arguments :
- The folder of your music library (flac/ogg/mp3 ...)
- The destination folder (you need to create it before).
It produce :
- An exact copy from the source folder into the destination folder, with:
- the non flac files copied into.
- the flac files transformed to mp3 ( VBR high quality)
- A run.sh file with the commands to convert the flac files (this script is executed automatically).
#!/bin/bash
FLAC_PATH=$1
CONV_PATH=$2
DEBUG=0;
function usage
echo "";
echo " This script convert all flac files from a folder to mp3 files to a second folder";
echo "";
echo " Usage :";
echo " ./conv.sh Source Folder Destination Folder";
echo " note : booth folder must exist before starting this script";
echo " files other than flac are copied to the destination folder";
echo "";
if [ ! -d "$2" ]; then
echo "";
echo " ERROR : [$2] is not a directory.";
usage
exit 1
fi;
if [ ! -d "$2" ]; then
echo "";
echo " ERROR : [$2] is not a directory.";
usage
exit 1
fi;
COMMANDS="run.sh"
echo "" > run.sh
echo " convert from $FLAC_PATH to $CONV_PATH ";
find "$FLAC_PATH" -type f |while read myFile; do
SRC_DIR=$myFile%/*
SRC_FILE=$myFile##*/
DST_DIR=$CONV_PATH/$SRC_DIR
mkdir -p "$DST_DIR"
# TEST if the file is a flac ....
metaflac --show-md5sum "$myFile" 2>/dev/null 1>/dev/null
if [ $? -eq 0 ]; then
echo -n " *** $myFile [FLAC !] : "
DST_FILE=$myFile%.*
OUT_PATH="$DST_DIR/$( echo $SRC_FILE | sed -e 's/.flac$/.mp3/')"
if [ $DEBUG == 1 ]; then
echo " SRC = $myFile";
echo " OUT = $OUT_PATH"
fi;
if [ -f "$OUT_PATH" ]; then
echo " exist, do nothing !";
else
echo " add to compress list !";
echo "ffmpeg -y -i "$myFile" -codec:a libmp3lame -q:a 0 -map_metadata 0 -id3v2_version 3 "$OUT_PATH" " >> $COMMANDS
fi;
else
echo -n " *** $SRC_FILE [NOT FLAC] : "
if [ -f "$CONV_PATH/$myFile" ]; then
echo " exist, do nothing !"
else
echo " copy."
cp "$myFile" "$CONV_PATH/$myFile"
fi
fi
done;
echo " And now, CONVERT THE FLAC's!!! "
sh run.sh
add a comment |
If it can help ....
I've written a small bash script to do this ....
You need to have ffmpeg / flac installed.
How it works:
It takes 2 arguments :
- The folder of your music library (flac/ogg/mp3 ...)
- The destination folder (you need to create it before).
It produce :
- An exact copy from the source folder into the destination folder, with:
- the non flac files copied into.
- the flac files transformed to mp3 ( VBR high quality)
- A run.sh file with the commands to convert the flac files (this script is executed automatically).
#!/bin/bash
FLAC_PATH=$1
CONV_PATH=$2
DEBUG=0;
function usage
echo "";
echo " This script convert all flac files from a folder to mp3 files to a second folder";
echo "";
echo " Usage :";
echo " ./conv.sh Source Folder Destination Folder";
echo " note : booth folder must exist before starting this script";
echo " files other than flac are copied to the destination folder";
echo "";
if [ ! -d "$2" ]; then
echo "";
echo " ERROR : [$2] is not a directory.";
usage
exit 1
fi;
if [ ! -d "$2" ]; then
echo "";
echo " ERROR : [$2] is not a directory.";
usage
exit 1
fi;
COMMANDS="run.sh"
echo "" > run.sh
echo " convert from $FLAC_PATH to $CONV_PATH ";
find "$FLAC_PATH" -type f |while read myFile; do
SRC_DIR=$myFile%/*
SRC_FILE=$myFile##*/
DST_DIR=$CONV_PATH/$SRC_DIR
mkdir -p "$DST_DIR"
# TEST if the file is a flac ....
metaflac --show-md5sum "$myFile" 2>/dev/null 1>/dev/null
if [ $? -eq 0 ]; then
echo -n " *** $myFile [FLAC !] : "
DST_FILE=$myFile%.*
OUT_PATH="$DST_DIR/$( echo $SRC_FILE | sed -e 's/.flac$/.mp3/')"
if [ $DEBUG == 1 ]; then
echo " SRC = $myFile";
echo " OUT = $OUT_PATH"
fi;
if [ -f "$OUT_PATH" ]; then
echo " exist, do nothing !";
else
echo " add to compress list !";
echo "ffmpeg -y -i "$myFile" -codec:a libmp3lame -q:a 0 -map_metadata 0 -id3v2_version 3 "$OUT_PATH" " >> $COMMANDS
fi;
else
echo -n " *** $SRC_FILE [NOT FLAC] : "
if [ -f "$CONV_PATH/$myFile" ]; then
echo " exist, do nothing !"
else
echo " copy."
cp "$myFile" "$CONV_PATH/$myFile"
fi
fi
done;
echo " And now, CONVERT THE FLAC's!!! "
sh run.sh
If it can help ....
I've written a small bash script to do this ....
You need to have ffmpeg / flac installed.
How it works:
It takes 2 arguments :
- The folder of your music library (flac/ogg/mp3 ...)
- The destination folder (you need to create it before).
It produce :
- An exact copy from the source folder into the destination folder, with:
- the non flac files copied into.
- the flac files transformed to mp3 ( VBR high quality)
- A run.sh file with the commands to convert the flac files (this script is executed automatically).
#!/bin/bash
FLAC_PATH=$1
CONV_PATH=$2
DEBUG=0;
function usage
echo "";
echo " This script convert all flac files from a folder to mp3 files to a second folder";
echo "";
echo " Usage :";
echo " ./conv.sh Source Folder Destination Folder";
echo " note : booth folder must exist before starting this script";
echo " files other than flac are copied to the destination folder";
echo "";
if [ ! -d "$2" ]; then
echo "";
echo " ERROR : [$2] is not a directory.";
usage
exit 1
fi;
if [ ! -d "$2" ]; then
echo "";
echo " ERROR : [$2] is not a directory.";
usage
exit 1
fi;
COMMANDS="run.sh"
echo "" > run.sh
echo " convert from $FLAC_PATH to $CONV_PATH ";
find "$FLAC_PATH" -type f |while read myFile; do
SRC_DIR=$myFile%/*
SRC_FILE=$myFile##*/
DST_DIR=$CONV_PATH/$SRC_DIR
mkdir -p "$DST_DIR"
# TEST if the file is a flac ....
metaflac --show-md5sum "$myFile" 2>/dev/null 1>/dev/null
if [ $? -eq 0 ]; then
echo -n " *** $myFile [FLAC !] : "
DST_FILE=$myFile%.*
OUT_PATH="$DST_DIR/$( echo $SRC_FILE | sed -e 's/.flac$/.mp3/')"
if [ $DEBUG == 1 ]; then
echo " SRC = $myFile";
echo " OUT = $OUT_PATH"
fi;
if [ -f "$OUT_PATH" ]; then
echo " exist, do nothing !";
else
echo " add to compress list !";
echo "ffmpeg -y -i "$myFile" -codec:a libmp3lame -q:a 0 -map_metadata 0 -id3v2_version 3 "$OUT_PATH" " >> $COMMANDS
fi;
else
echo -n " *** $SRC_FILE [NOT FLAC] : "
if [ -f "$CONV_PATH/$myFile" ]; then
echo " exist, do nothing !"
else
echo " copy."
cp "$myFile" "$CONV_PATH/$myFile"
fi
fi
done;
echo " And now, CONVERT THE FLAC's!!! "
sh run.sh
answered Aug 4 '17 at 11:21
LaurentLaurent
1
1
add a comment |
add a comment |
To recursively convert in mp3 all the flac or wav files in nested folders, I used this command:
find '~/Music/' -iname '*.flac' , -iname '*.wav' -exec bash -c 'D=$(dirname ""); B=$(basename ""); mkdir "$D/mp3/"; ffmpeg -i "" -ab 320k -map_metadata 0 -id3v2_version 3 -acodec libmp3lame "$D/mp3/$B%.*.mp3"' ;
It will create a folder named "mp3" inside the one with flac or wav files and, inside the mp3 folder, it will save relative mp3 files with a bitrate of 320kbps, without keeping the old file extension in the name.
add a comment |
To recursively convert in mp3 all the flac or wav files in nested folders, I used this command:
find '~/Music/' -iname '*.flac' , -iname '*.wav' -exec bash -c 'D=$(dirname ""); B=$(basename ""); mkdir "$D/mp3/"; ffmpeg -i "" -ab 320k -map_metadata 0 -id3v2_version 3 -acodec libmp3lame "$D/mp3/$B%.*.mp3"' ;
It will create a folder named "mp3" inside the one with flac or wav files and, inside the mp3 folder, it will save relative mp3 files with a bitrate of 320kbps, without keeping the old file extension in the name.
add a comment |
To recursively convert in mp3 all the flac or wav files in nested folders, I used this command:
find '~/Music/' -iname '*.flac' , -iname '*.wav' -exec bash -c 'D=$(dirname ""); B=$(basename ""); mkdir "$D/mp3/"; ffmpeg -i "" -ab 320k -map_metadata 0 -id3v2_version 3 -acodec libmp3lame "$D/mp3/$B%.*.mp3"' ;
It will create a folder named "mp3" inside the one with flac or wav files and, inside the mp3 folder, it will save relative mp3 files with a bitrate of 320kbps, without keeping the old file extension in the name.
To recursively convert in mp3 all the flac or wav files in nested folders, I used this command:
find '~/Music/' -iname '*.flac' , -iname '*.wav' -exec bash -c 'D=$(dirname ""); B=$(basename ""); mkdir "$D/mp3/"; ffmpeg -i "" -ab 320k -map_metadata 0 -id3v2_version 3 -acodec libmp3lame "$D/mp3/$B%.*.mp3"' ;
It will create a folder named "mp3" inside the one with flac or wav files and, inside the mp3 folder, it will save relative mp3 files with a bitrate of 320kbps, without keeping the old file extension in the name.
edited Jun 2 '18 at 23:33
answered Jun 2 '18 at 23:18
Riccardo VolpeRiccardo Volpe
1013
1013
add a comment |
add a comment |
GNU Parallel is make for these kind of tasks:
# change to the home directory
cd ~/music
# convert all *.flac files
parallel ffmpeg -i -acodec libmp3lame ..mp3 ::: *.flac
# (optional: check whether there are any errors printed on the terminal)
sleep 60
It will run the jobs in parallel (one job per cpu core) and make sure the output on the terminal is not mixed together.
add a comment |
GNU Parallel is make for these kind of tasks:
# change to the home directory
cd ~/music
# convert all *.flac files
parallel ffmpeg -i -acodec libmp3lame ..mp3 ::: *.flac
# (optional: check whether there are any errors printed on the terminal)
sleep 60
It will run the jobs in parallel (one job per cpu core) and make sure the output on the terminal is not mixed together.
add a comment |
GNU Parallel is make for these kind of tasks:
# change to the home directory
cd ~/music
# convert all *.flac files
parallel ffmpeg -i -acodec libmp3lame ..mp3 ::: *.flac
# (optional: check whether there are any errors printed on the terminal)
sleep 60
It will run the jobs in parallel (one job per cpu core) and make sure the output on the terminal is not mixed together.
GNU Parallel is make for these kind of tasks:
# change to the home directory
cd ~/music
# convert all *.flac files
parallel ffmpeg -i -acodec libmp3lame ..mp3 ::: *.flac
# (optional: check whether there are any errors printed on the terminal)
sleep 60
It will run the jobs in parallel (one job per cpu core) and make sure the output on the terminal is not mixed together.
answered Jun 3 '18 at 8:36
Ole TangeOle Tange
12.9k1457107
12.9k1457107
add a comment |
add a comment |
The file name is "wav2mp3"
#!/bin/sh
# put the script to /usr/local/sbin
EXT_IN=$1
QUALITY=$2
if [ "$EXT_IN" = "" -o "$QUALITY" = "" ]; then
printf "Usage: wav2mp3 <in_file_ext> <quality> ne.g. wav2mp3 wav 2n"
exit 1
fi
#String delimeter
SAVEIFS=$IFS
IFS='
'
# List of the files in directory lower than current to array
FILES_LIST=`find . -type f -name "*.$EXT_IN"`
for FILE in $FILES_LIST; do
echo $FILE
PREFIX=`echo $FILE | awk -F . 'OFS="." $NF="" 1' | sed 's/.$//'`
echo $PREFIX
ffmpeg -i $FILE -codec:a libmp3lame -qscale:a $QUALITY $PREFIX.mp3
done
New contributor
Consider using shellcheck.net. It has quite a few suggestions regarding your script.
– llogan
2 days ago
add a comment |
The file name is "wav2mp3"
#!/bin/sh
# put the script to /usr/local/sbin
EXT_IN=$1
QUALITY=$2
if [ "$EXT_IN" = "" -o "$QUALITY" = "" ]; then
printf "Usage: wav2mp3 <in_file_ext> <quality> ne.g. wav2mp3 wav 2n"
exit 1
fi
#String delimeter
SAVEIFS=$IFS
IFS='
'
# List of the files in directory lower than current to array
FILES_LIST=`find . -type f -name "*.$EXT_IN"`
for FILE in $FILES_LIST; do
echo $FILE
PREFIX=`echo $FILE | awk -F . 'OFS="." $NF="" 1' | sed 's/.$//'`
echo $PREFIX
ffmpeg -i $FILE -codec:a libmp3lame -qscale:a $QUALITY $PREFIX.mp3
done
New contributor
Consider using shellcheck.net. It has quite a few suggestions regarding your script.
– llogan
2 days ago
add a comment |
The file name is "wav2mp3"
#!/bin/sh
# put the script to /usr/local/sbin
EXT_IN=$1
QUALITY=$2
if [ "$EXT_IN" = "" -o "$QUALITY" = "" ]; then
printf "Usage: wav2mp3 <in_file_ext> <quality> ne.g. wav2mp3 wav 2n"
exit 1
fi
#String delimeter
SAVEIFS=$IFS
IFS='
'
# List of the files in directory lower than current to array
FILES_LIST=`find . -type f -name "*.$EXT_IN"`
for FILE in $FILES_LIST; do
echo $FILE
PREFIX=`echo $FILE | awk -F . 'OFS="." $NF="" 1' | sed 's/.$//'`
echo $PREFIX
ffmpeg -i $FILE -codec:a libmp3lame -qscale:a $QUALITY $PREFIX.mp3
done
New contributor
The file name is "wav2mp3"
#!/bin/sh
# put the script to /usr/local/sbin
EXT_IN=$1
QUALITY=$2
if [ "$EXT_IN" = "" -o "$QUALITY" = "" ]; then
printf "Usage: wav2mp3 <in_file_ext> <quality> ne.g. wav2mp3 wav 2n"
exit 1
fi
#String delimeter
SAVEIFS=$IFS
IFS='
'
# List of the files in directory lower than current to array
FILES_LIST=`find . -type f -name "*.$EXT_IN"`
for FILE in $FILES_LIST; do
echo $FILE
PREFIX=`echo $FILE | awk -F . 'OFS="." $NF="" 1' | sed 's/.$//'`
echo $PREFIX
ffmpeg -i $FILE -codec:a libmp3lame -qscale:a $QUALITY $PREFIX.mp3
done
New contributor
New contributor
answered 2 days ago
DenisVSDenisVS
1
1
New contributor
New contributor
Consider using shellcheck.net. It has quite a few suggestions regarding your script.
– llogan
2 days ago
add a comment |
Consider using shellcheck.net. It has quite a few suggestions regarding your script.
– llogan
2 days ago
Consider using shellcheck.net. It has quite a few suggestions regarding your script.
– llogan
2 days ago
Consider using shellcheck.net. It has quite a few suggestions regarding your script.
– llogan
2 days ago
add a comment |
for a in *.flac
do
OUTF=echo "$a" | sed s/.flac$/.mp3/g
ffmpeg -i "$a" -acodec libmp3lame "$OUTF"
done
1
welcome to U&L, your answer hardly add anything to @Ketan accepted answer four years ago.
– Archemar
Dec 29 '17 at 8:45
add a comment |
for a in *.flac
do
OUTF=echo "$a" | sed s/.flac$/.mp3/g
ffmpeg -i "$a" -acodec libmp3lame "$OUTF"
done
1
welcome to U&L, your answer hardly add anything to @Ketan accepted answer four years ago.
– Archemar
Dec 29 '17 at 8:45
add a comment |
for a in *.flac
do
OUTF=echo "$a" | sed s/.flac$/.mp3/g
ffmpeg -i "$a" -acodec libmp3lame "$OUTF"
done
for a in *.flac
do
OUTF=echo "$a" | sed s/.flac$/.mp3/g
ffmpeg -i "$a" -acodec libmp3lame "$OUTF"
done
answered Dec 29 '17 at 8:18
Peter McConnellPeter McConnell
1
1
1
welcome to U&L, your answer hardly add anything to @Ketan accepted answer four years ago.
– Archemar
Dec 29 '17 at 8:45
add a comment |
1
welcome to U&L, your answer hardly add anything to @Ketan accepted answer four years ago.
– Archemar
Dec 29 '17 at 8:45
1
1
welcome to U&L, your answer hardly add anything to @Ketan accepted answer four years ago.
– Archemar
Dec 29 '17 at 8:45
welcome to U&L, your answer hardly add anything to @Ketan accepted answer four years ago.
– Archemar
Dec 29 '17 at 8:45
add a comment |
I realize this comes quite late, but for memory, see my script "batchaudiocvt" on sourceforge. It is a (quite large) shell script designed for efficient mass conversion of audio files, between many formats. In particular, it makes its best to convert the usual tags.
This question is about how to handle the loop in the shell. The user already knows the command they want to use to do the conversion.
– G-Man
Oct 31 '18 at 23:51
Welcome to Stack Exchange. Are you Eric Dujardin? If so, it would be good to use the contact form and select ‘‘I need to merge user profiles’’ to have your accounts merged.
– Scott
Nov 1 '18 at 2:19
Sorry, I was just trying to help with the stated goal of converting the files. Anyway the provided script may be worth a read.
– Eric Dujardin
Nov 1 '18 at 8:18
add a comment |
I realize this comes quite late, but for memory, see my script "batchaudiocvt" on sourceforge. It is a (quite large) shell script designed for efficient mass conversion of audio files, between many formats. In particular, it makes its best to convert the usual tags.
This question is about how to handle the loop in the shell. The user already knows the command they want to use to do the conversion.
– G-Man
Oct 31 '18 at 23:51
Welcome to Stack Exchange. Are you Eric Dujardin? If so, it would be good to use the contact form and select ‘‘I need to merge user profiles’’ to have your accounts merged.
– Scott
Nov 1 '18 at 2:19
Sorry, I was just trying to help with the stated goal of converting the files. Anyway the provided script may be worth a read.
– Eric Dujardin
Nov 1 '18 at 8:18
add a comment |
I realize this comes quite late, but for memory, see my script "batchaudiocvt" on sourceforge. It is a (quite large) shell script designed for efficient mass conversion of audio files, between many formats. In particular, it makes its best to convert the usual tags.
I realize this comes quite late, but for memory, see my script "batchaudiocvt" on sourceforge. It is a (quite large) shell script designed for efficient mass conversion of audio files, between many formats. In particular, it makes its best to convert the usual tags.
answered Oct 31 '18 at 22:35
Eric DujardinEric Dujardin
1
1
This question is about how to handle the loop in the shell. The user already knows the command they want to use to do the conversion.
– G-Man
Oct 31 '18 at 23:51
Welcome to Stack Exchange. Are you Eric Dujardin? If so, it would be good to use the contact form and select ‘‘I need to merge user profiles’’ to have your accounts merged.
– Scott
Nov 1 '18 at 2:19
Sorry, I was just trying to help with the stated goal of converting the files. Anyway the provided script may be worth a read.
– Eric Dujardin
Nov 1 '18 at 8:18
add a comment |
This question is about how to handle the loop in the shell. The user already knows the command they want to use to do the conversion.
– G-Man
Oct 31 '18 at 23:51
Welcome to Stack Exchange. Are you Eric Dujardin? If so, it would be good to use the contact form and select ‘‘I need to merge user profiles’’ to have your accounts merged.
– Scott
Nov 1 '18 at 2:19
Sorry, I was just trying to help with the stated goal of converting the files. Anyway the provided script may be worth a read.
– Eric Dujardin
Nov 1 '18 at 8:18
This question is about how to handle the loop in the shell. The user already knows the command they want to use to do the conversion.
– G-Man
Oct 31 '18 at 23:51
This question is about how to handle the loop in the shell. The user already knows the command they want to use to do the conversion.
– G-Man
Oct 31 '18 at 23:51
Welcome to Stack Exchange. Are you Eric Dujardin? If so, it would be good to use the contact form and select ‘‘I need to merge user profiles’’ to have your accounts merged.
– Scott
Nov 1 '18 at 2:19
Welcome to Stack Exchange. Are you Eric Dujardin? If so, it would be good to use the contact form and select ‘‘I need to merge user profiles’’ to have your accounts merged.
– Scott
Nov 1 '18 at 2:19
Sorry, I was just trying to help with the stated goal of converting the files. Anyway the provided script may be worth a read.
– Eric Dujardin
Nov 1 '18 at 8:18
Sorry, I was just trying to help with the stated goal of converting the files. Anyway the provided script may be worth a read.
– Eric Dujardin
Nov 1 '18 at 8:18
add a comment |
Thanks for contributing an answer to Unix & Linux Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f114908%2fbash-script-to-convert-all-flac-to-mp3-with-ffmpeg%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
2
did you try "FOR LOOP"?
– Danila Ladner
Feb 12 '14 at 15:57
@DanilaLadner Not yet. Thanks for the clue.
– Kevin Dong
Feb 12 '14 at 15:58
I wrote a script that does this, in parallel, and copies the tags over: http://tuxhelp.org/#flac-distiller
– user136310
Sep 29 '15 at 19:38
Sorry I forget it. After convert file name become file.avi.mp3 you can use : rename "s/.avi//g" *.avi.mp3 for remove .avi.
– user149335
Dec 29 '15 at 19:47
1
Give computer break after hard work.
– MeowMeow
Jul 13 '18 at 14:21