ฉันใช้ทุกสิ่งที่ฉันพบที่นี่ (และอาจเป็นในไซต์อื่น ๆ ) และสร้างเครื่องมือขนาดเล็กที่ไม่เพียง แต่สร้าง mp3s ของ flacs ซ้ำ แต่ยังรักษาเส้นทางสัมพัทธ์เพื่อสร้างพวกมันที่อื่นด้วยการสนับสนุนมัลติเธรด
โอ้และใช่ฉันเห็นว่าฉันไม่ได้ใช้ ffmpeg ในกรณีนั้นเพราะ OSMC ของฉันไม่ได้ให้บริการแพ็คเกจสำหรับ ffmpeg เพียง avconv แต่เนื่องจากคุณอยู่ที่นี่แล้วฉันคิดว่าคุณรู้ว่ามันเป็น "พื้น" เหมือนกัน - อย่างน้อยก็ในส่วนที่สำคัญที่สุด เพียงแค่แทนที่คำสั่ง "avconv" ด้วย "ffmpeg" วิ่งครั้งแรกของฉันอยู่กับถัง ffmpeg และตัวเลือกเดียวกันแน่นอน
ฉันไม่ได้เป็นแฮ็กเกอร์ทุบตี แต่ฉันจัดการมันเป็น bashscript แรกของฉันที่มีความต้องการที่กำหนดและอาจมีบางคนได้รับประโยชน์ ฉันเปิดกว้างสำหรับคำแนะนำใด ๆ จากคุณ แต่จนถึงตอนนี้ก็ใช้ได้สำหรับฉัน
สคริปต์ของฉันหมุน 4 อินสแตนซ์สำหรับแต่ละคอร์เป็นเช่นนี้:
#!/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"
และสคริปต์ผู้ปฏิบัติงานเช่นนี้:
#!/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
ซึ่งสามารถพบได้ที่
https://github.com/erdnuesse/flac-to-mp3
ขอแสดงความนับถือเคย์