C++ не ответственен за ширину. Мне ввели более длительный ответ, но действительно стало ненужным, когда я сделал тест...
В основном использовать tabs
(часть ncurses5 пакета)..., например.
zsh> tabs 4 # 4 space width tabs
zsh> ./a.out
Это отформатирует к Вашей ширине, которую Вы хотите автоматически. Никакая потребность передать по каналу (который не помогает, если у Вас есть интерактивная работа).
Попробуйте это:
for i in *.flac ; do
ffmpeg -i "$i" -acodec libmp3lame "$(basename "${i/.flac}")".mp3
sleep 60
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
Простое 1 вкладышее решение:
Найти -name "* .flac" -exec ffmpeg -i {} -акодек libmp3lame -ab 128k {} .mp3 \;
http://lewisdiamond.blogspot.ca/2012/01/Convering-flac -Вто-mp3.html
Обратите внимание, что это будет применено рекурсивно в данном каталоге. Я Если вы запустите это из вашей музыкальной папки, он преобразует все фламы из подпапок и дает .mp3 рядом с ним. Вы также можете сделать это без FFMPEG непосредственно с помощью FLAC и LAME (I.E. ЧИТАТЬ W / FLAC, Труба к хромам, выводя в файл .mp3), как показано на ссылке.
Если у вас есть несколько белых пробелов в именах файлов:
for a in *.flac; do
f="${a[@]/%flac/mp3}"
ffmpeg -i "$a" -qscale:a 0 "$f"
done
Я работал над ответом @Ketan, используя avconv, поскольку ffmpeg здесь не работает.
for i in *.flac ; do
avconv -i "$i" "./mp3/$i".mp3
done
При этом файлы flac
в папке преобразуются в файлы mp3
, а затем перемещаются в существующую папку «mp3». Файлы будут называться в модели "original_name.flac.mp3"
Параллельный FTW (несомненно, у вас более одного ядра - почему бы не использовать их?):
ls *flac | while read f; do ffmpeg -i "$f" -acodec libmp3lame $f.mp3 & done
Например, если у вас есть несколько файлов avi:
ls *.avi | xargs -I {} ffmpeg -i {} {}.mp3
Para convertir recursivamente en mp3 todos los archivos flac o wav en carpetas anidadas, usé este comando:
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"' \;
Creará una carpeta llamada "mp3" dentro de la carpeta con archivos flac o wav y, dentro de la carpeta mp3, guardará archivos mp3 relativos con una tasa de bits de 320 kbps, sin mantener la extensión del archivo anterior en el nombre.
GNU Parallel está hecho para este tipo de tareas:
# 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
Ejecutará los trabajos en paralelo (un trabajo por núcleo de CPU )y se asegurará de que la salida en el terminal no se mezcle.
Para obtener más información, dedique 15 minutos a leer el capítulo 1+2:https://zenodo.org/record/1146014
Если это поможет.... Для этого я написал небольшой bash-скрипт.... У вас должен быть установлен ffmpeg
/ flac
.
Как это работает:
Требуется 2 аргумента:
Он производит:
run.sh
с командами для преобразования файлов flac (этот скрипт выполняется автоматически ).
#!/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
Я понимаю, что это происходит довольно поздно, но на память посмотрите мой скрипт "batchaudiocvt" на sourceforge. Это (довольно большой )сценарий оболочки, разработанный для эффективного массового преобразования аудиофайлов между многими форматами. В частности, он старается конвертировать обычные теги.
Имя файла "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 2\n"
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
Следующая команда оболочки будет рекурсивно просматривать все подпапки, начиная с текущей папки, и конвертировать все файлы.flac в формат.mp3, сохраняя имена файлов и исходную структуру каталогов.
Если вы хотите преобразовать все ваши файлы.flac в.mp3, но сохранить исходные файлы.flac, используйте:
find. -type f -name "*.flac" -exec bash -c 'FILE="$1"; ffmpeg -i "${FILE}" -vn -c:a libmp3lame -ab 320k -y "${FILE%.flac}.mp3";' _ '{}' \;
-ab
— желаемая скорость передачи аудиосигнала для выходных mp3-файлов (, обычно в диапазоне от 128 до 320 КБ, где выше — лучшее качество, но больше размер файла ).
Если есть проблема или вы хотите повторно преобразовать ваши файлы.flac с более высокой скоростью передачи данных, исходные файлы.flac будут сохранены, а повторение вышеуказанной команды перезапишет ваши ранее созданные файлы.mp3 с помощью новые (флаг -y
указывает ffmpeg
перезаписывать предыдущие выходные файлы с тем же именем без запроса подтверждения ).
Когда вы убедитесь, что все файлы были успешно преобразованы, вы можете удалить исходные файлы.flac с помощью этого скрипта:
find. -type f -name "*.flac" -exec bash -c 'FILE="$1"; rm "${FILE}";' _ '{}' \;
Кроме того, вы можете рекурсивно преобразовать все файлы.flac в.mp3 и удалить исходные файлы.flac за один раз с помощью одной строки скрипта, но используйте это с осторожностью, так как исходные файлы будут удалены:
find. -type f -name "*.flac" -exec bash -c 'FILE="$1"; ffmpeg -i "${FILE}" -vn -c:a libmp3lame -ab 320k -y "${FILE%.flac}.mp3" && rm "${FILE}";' _ '{}' \;
Если вы хотите рекурсивно конвертировать аудиофайлы из форматов, отличных от.flac, в.mp3, отредактируйте приведенные выше сценарии, заменив «.flac» соответствующим расширением входного файла (, например. «.wav», «.wma» и т. д.)
$(basename "${i/.flac}")
обработать пробелы? – ppr 03.01.2016, 17:39for
цикл: $ IFS= '\n' – mkc 03.01.2016, 21:14$(basename "${i/.flac}").mp3
кому:"$(basename "${i/.flac}").mp3"
(помещающие кавычки вокруг этого) – MalcolmOcean 17.09.2016, 23:02