Tüm meta verileri koruyarak (yani .flac dosyalarındaki Vorbis açıklamasını .mp3'ün ID3v2 meta verilerine dönüştürerek) .flac'ı ffmpeg ile .mp3'e nasıl dönüştürebilirim ?
Tüm meta verileri koruyarak (yani .flac dosyalarındaki Vorbis açıklamasını .mp3'ün ID3v2 meta verilerine dönüştürerek) .flac'ı ffmpeg ile .mp3'e nasıl dönüştürebilirim ?
Yanıtlar:
Aşağıdaki komut .mp3'te (320 kbps) yüksek kaliteyi korur ve .flac dosyasındaki meta veriler, .mp3 dosyalarına dahil edilebilecek olan ID3v2 biçimine dönüştürülür:
ffmpeg -i input.flac -ab 320k -map_metadata 0 -id3v2_version 3 output.mp3
ffmpeg
3.2 -map_metadata 0 -id3v2_version 3
, ID3v1 etiketlerine kopyalanmasa da , belirlemeye gerek kalmadan meta verileri otomatik olarak FLAC'tan ID3v2'ye kopyalar . Bunun için ayrı bir araç kullanıyorum.
Yukarıda mükemmel cevap. Bir alt ağaçtaki tüm FLAC dosyalarını bu komutla iTunes'a eklemek için find ile birlikte kullanıyorum
find . -name "*.flac" -exec ffmpeg -i {} -ab 160k -map_metadata 0 -id3v2_version 3 {}.mp3 \;
Elde edilen dosyaları iTunes'a otomatik olarak eklemek için iTunes içe aktarma dizinini şu şekilde alın:
find ~/Music/ -name "Automatically Add*"
sonuç örneğin
/Users/sir/Music//iTunes/iTunes Media/Automatically Add to iTunes.localized
Sonra örneğin çalıştırın
find . -name "*.mp3" -exec mv {} "/Users/sir/Music//iTunes/iTunes Media/Automatically Add to iTunes.localized/" \;
Dönüştürülen tüm parçaları otomatik olarak iTunes'a eklemek için.
Biraz yer kazanmak istiyorsanız, hydrogenaud.io'nun önerisini deneyin :
Çok yüksek kalite: iyi dosya boyutu ile HiFi, ev veya sessiz dinleme,
-V0 (~245 kbps)
,-V1 (~225 kbps)
,-V2 (~190 kbps)
veya-V3 (~175 kbps)
tavsiye edilir. Bu VBR ayarları normalde şeffaf sonuçlar üretecektir. Bu ön ayarlar arasında duyulabilir farklılıklar olabilir, ancak nadirdir.
Kaynak: http://wiki.hydrogenaud.io/index.php?title=LAME
Bu seçeneği ffmpeg'de kullanmak istiyorsanız, -q:a 0
diğer adı kullanmalısınız .
-qscale:a
(Veya takma ad-q:a
) ile kaliteyi kontrol edin . Değerler kodlayıcıya özeldir, bu nedenle libmp3lame için aralık 0-9'dur, burada daha düşük bir değer daha yüksek kalitedir. 0-3 normalde saydam sonuçlar üretir, 4 (varsayılan) algısal şeffaflığa yakın olmalıdır ve 6 "kabul edilebilir" bir kalite üretir. Seçenek-qscale:a
,-V
bağımsız lame komut satırı arabirim aracındaki seçenekle eşleştirilmiştir .
Kaynak: https://trac.ffmpeg.org/wiki/Encode/MP3
ID3v1 meta etiketlerini de istiyorsanız, -write_id3v1 1
parametreyi eklemelisiniz .
Bu yüzden son emrim:
ffmpeg.exe -y -i input.flac -codec:a libmp3lame -q:a 0 -map_metadata 0 -id3v2_version 3 -write_id3v1 1 output.mp3
infile.flac
Dosyayı dönüştürmek için aşağıdaki komutu test ediyordum outfile.mp3
:
ffmpeg -i infile.flac -q:a 0 outfile.mp3
Ubuntu 16.04'ten itibaren, yukarıdaki komut meta verileri kopyalıyor (çoğu? Tümü?) Görünüyor.
-q:a 0
ffmpeg
en yüksek kalitede VBR kullanılmasını söyler .
Bununla birlikte, ffmpeg
albüm resmimi 'den' jpeg
e dönüştürüyordu png
, bu da kapak resminin boyutunu artırdı.
Stream mapping:
Stream #0:1 -> #0:0 (mjpeg (native) -> png (native))
Stream #0:0 -> #0:1 (flac (native) -> mp3 (libmp3lame))
(Sanırım yukarıdaki dönüşüm, nasıl ffmpeg
çalıştığı göz önüne alındığında mantıklı geliyor .)
Biraz araştırma yaptıktan sonra -c:v copy
, video akışının kod dönüşümü yerine kopyalanması gerektiğini belirten seçeneği buldum . Tam komut şudur:
ffmpeg -i infile.flac -c:v copy -q:a 0 outfile.mp3
Yukarıdaki komut şu sonuçları verir:
Stream mapping:
Stream #0:1 -> #0:0 (copy)
Stream #0:0 -> #0:1 (flac (native) -> mp3 (libmp3lame))
İç içe klasörlerdeki tüm flac dosyalarını mp3'e yinelemeli olarak dönüştürmek için şu komutu kullandım:
find '~/Music/' -iname '*.flac' -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"' \;
Flac dosyaları içeren klasörün içinde "mp3" adlı bir klasör oluşturacak ve mp3 klasörünün içinde, eski dosya uzantısını adında tutmadan, göreceli mp3 dosyalarını 320kbps bit hızında kaydedecektir.
$file
gibi "$file"
.
:r
zsh
çalışmayan bir değiştirici gibi görünüyor bash
. Bash'de "${file:r}.mp3"
ile değiştirebilirsiniz "${file%.flac}.mp3"
.
${file%.*}
Bunun sorulmadığını biliyorum, ancak bunun yapılmasının nedenlerinden biri (en azından yapmak istediğim şey bu), müziğin FLAC'ı desteklemeyen Apple iTunes'a aktarılabilmesidir. Böyle bir durumda FLAC'ı Apple'ın kendi kayıpsız formatı olan m4a'ya dönüştürmek daha mantıklıdır. Bu komutu, benzer dosya boyutlarını korurken, geçerli klasördeki tüm dosyaları dönüştürmek için kullandım.
find . -name "*.flac" -exec ffmpeg -i {} -map_metadata 0 -acodec alac {}.m4a \;
Bu flac2mp3.sh komut dosyası ffmpeg
, FLAC dosyalarının bir klasör ağacını MP3 dosyalarının başka bir klasör ağacına dönüştürmek için kullanır . Varsa kapak resmi dahildir. Aynı CORES
anda birkaç dosyayı dönüştürmek üzere arka plan işleri oluşturmak için bir değişken ayarlayabilirsiniz .
ffmpeg
cli kullanım sorularını sormanız gerektiğini lütfen unutmayın . Stack Overflow yalnızca programlama içeren sorular içindir. Ayrıca, FLAC resmi olarak yalnızca Vorbis açıklamasını destekler , bu nedenle "tutmak" yerine ID3v2'ye dönüştürmek istediğinizi varsayıyorum.