FFMPEG: Önemli bilgi / kalite kaybı olmadan m4a dosyalarını mp3'e dönüştürür. Otomatik bit hızı


44

M4a'dan mp3'e dönüştürmek istediğim bir sürü ses dosyası (yaklaşık 1000) var, böylece USB portu olan bir CD çalarda çalmayı kullanabilirim.

Basit bir şey yapmayı denedim: ffmpeg -i FILE.m4a FILE.mp3ama bu bit oranını çok düşük bir değere düşürüyor, ki istediğim de bu değil.

Benzer şekilde, 320k gibi sabit bir bit hızı kullanarak dönüştürmek istemiyorum, çünkü dönüştürdüğüm dosyaların bazıları 320k m4a ve bazıları 96k m4a gibi düşük kalitede.

Bazı dosyaları gerekenden çok daha büyük hale geleceğinden, 320k'yi zorlamak mantıklı gelmiyor. Benzer şekilde, tüm 320k dosyalarımı, 96k'den daha düşük bir şeye dönüştürerek imha etmenin bir anlamı yoktur. (Şu anda, dosyalar yaklaşık 50k'a dönüştürülüyor.)

Bunu nasıl yapabileceğimi bilen var mı? Gerçekten yapmak istediğim, ffmpeg'e, bir dizindeki tüm m4a dosyalarını mp3'lere dönüştürmesini ve mevcut ses kalitesini olabildiğince iyi tutmasını sağlamak. (Tabii ki, kayıptan kayıp dosya formatlarına geçmekten bazı ekstra kayıplar olabilir.)

Yardımınız için teşekkürler. Bu mümkün değilse, dosyaları tek tek dönüştürürken gerekli kaliteyi algılayabilecek bir tür komut dosyası var mı?

Not: Bir Intel Mac üzerinde çalışıyorum ama aynı zamanda bir Ubuntu kutum var.

Yanıtlar:


51

VBR

Bu -qscale:aseçeneği ffmpegdeğişken bit hızı (VBR) MP3 çıkışı oluşturmak için kullanabilirsiniz . Gönderen Kodlama VBR (Variable Bit Rate) mp3 ses: FFmpeg Wiki :

Kaliteyi -qscale:a(veya diğer adıyla -q:a) kontrol edin. Değerler kodlayıcıya özgüdür, bu nedenle libmp3lame için aralık daha düşük bir değerin daha yüksek bir kalite olduğu 0-9'dur. 0-3 normalde şeffaf sonuçlar üretecektir, 4 (varsayılan) algısal şeffaflığa yakın olmalı ve 6 genellikle "kabul edilebilir" bir kalite üretecektir. Seçenek -qscale:a, -Vbağımsız topal komut satırı arabirim aracındaki seçeneğe eşlenir .

Hangi değerin sizin için kabul edilebilir olduğunu görmek için deneme yapmanız gerekir. Ayrıca bkz. Hidrojen Sesi: Önerilen LAME Encoder Ayarları .

Birden fazla dosyayı kodlama

Bir dizindeki tüm dosyaları kodlamak için Bash "for loop" kullanabilirsiniz:

$ mkdir newfiles
$ for f in *.m4a; do ffmpeg -i "$f" -codec:v copy -codec:a libmp3lame -q:a 2 newfiles/"${f%.m4a}.mp3"; done

Almak ffmpeg

ffmpegMümkünse yeni bir yapı kullanmanız önerilir . OS X, Linux ve Windows için yapılara bağlantılar için FFmpeg İndirme sayfasına bakın . Ayrıca FFmpeg'i derlemek için bir kılavuz da takip edebilirsiniz .


1
Tamam teşekkürler, komutlar işe yaradı, ancak istediğimi yaptığını sanmıyorum. Ben set -q: 0, yüksek kaliteli m4a'nın (yüksek vbr oranlarına sahip büyük dosyalar üretmek için) umduğum şeyi yapıyor ama düşük kaliteli dosyalar hala 250-260 vbr'larla büyük dosyalara dönüştürülüyor. kb / s. Mbr formatındaki 96k olan dosyaların vbr modunda toplayıcı kodlayıcı ile benzer bir bit hızına dönüştürülmesini beklerdim. Vbr kodlama modunun nasıl çalıştığını tam olarak anlamadığımı farz ediyorum.
user3728501

19

FFmpeg kullanın (çok fazla GUI sürümü var)

  1. MP3 zaten kullanılmıyor (2017'de), kullanılmayan kodlayıcı. İnternet zaten AAC'ye geçti (daha verimli ve kaliteli kodlayıcı):

    ffmpeg -i filenameee.m4a -acodec copy output.aac
    
  2. Ancak, yine de MP3 kullanmak istiyorsanız (hala daha fazla cihaz tarafından desteklendiğinden dolayı):

    ffmpeg -i filenameee.m4a -acodec libmp3lame -ab 256k output.mp3
    

4
Soru kalite ile ilgili olduğundan, belki 128 yerine 256k
değerine

3

Bu benim için çalıştı:

ffmpeg -i testing.m4v -b:a 192K -vn testing.mp3

1

Mevcut cevapları temel alarak, bir Ubuntu makinesinde tam olarak sorduğu şeyi yapması gereken bir bash betiği yazdım (16.04'te test edildi). Pakette avprobeolanı yüklemeniz gerekir libav-tools. avprobeAşağıdaki komutla yükleyebilirsiniz

sudo apt-get install libav-tools

NOT: Bu betiği çalıştırdığınız herhangi bir klasörü yedeklemenin yanı sıra, çalıştırmadan önce ne yaptığını okumak ve anlamak için elinizden geleni yapmak akıllıca olacaktır .

Ben çok sıkı test etmedim, bu yüzden YMMV.

#!/bin/bash

mkdir "mp3s"
for f in *.m4a;
do
    bitrate=$(avprobe "${f}" 2> >(grep bitrate) | sed 's/^.*bitrate://g' | sed 's/[^0-9]*//g')
    bitrate="${bitrate}K"
    new_filename=$(echo "${f}" | sed 's/.m4a$/.mp3/g')
    ffmpeg -y -i "${f}" -acodec libmp3lame -ab "${bitrate}" "mp3s/${new_filename}"
done

0

Giriş dosyasında 48 KhZ'de ve en az 24 bit çalışıyorsanız (i.ex. -q:a 0dosya dosyasından) flac kadar büyük olmayan bir dosyada 20 kHz çoğaltacaktır ... Gürültüyü azaltmadığınız sürece düşük kaliteli ses yüksek frekanslardan (hiss) titreme veya burun küçültme yoluyla, dönüştürmelerde yaratılan, çoğaltılacak ses editörleri veri dosyasını duyulmaz bir HF olarak kullanır, ancak pahalı bir gürültü kullanır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.