Burada bulduğum her şeyi (ve belki başka sitelerde) aldım ve sadece tekrarlayan flash mp3leri oluşturmak için değil, aynı zamanda çoklu okuma desteğiyle başka bir yerde onları oluşturmak için göreceli yolları koruyan küçük bir araç yarattım.
oh, ve evet, görüyorum ki, bu durumda ffmpeg kullanmadım, çünkü OSMC'm ffmpeg için paketler sunmadı, sadece avconv, ama zaten burada olduğunuzdan, sanırım "temelde" Aynı - en azından en önemli kısım için. Sadece "avconv" komutunu "ffmpeg" ile değiştirin. İlk seferim ffmpeg bin ve aynı seçeneklerle yapıldı.
Ben kesinlikle bir bash hacker değilim, ama verilen talepleri ile ilk bashript olarak, ve belki de birileri fayda sağlayacak. Sizin tarafınızdan herhangi bir öneri için açığım, ama şu ana kadar benim için çalışıyor.
Her bir çekirdekte bir tane olmak üzere 4 örneği döndüren senaryom şöyle:
#!/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"
Ve çalışan senaryo şöyle:
#!/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
hangi bulunabilir
https://github.com/erdnuesse/flac-to-mp3 adresinde
Saygılar, Kay