VBR için FFmpeg kullanarak mp3'ü wav'a dönüştürün


27

Bit hızı değişken olan bir mp3dosyayı dönüştürmek için hangi komutu kullanmalıyım wav. Ya da daha iyisi bu kaynak sesin fixedbit hızda mı olduğunu nasıl bilebilirim variable?


3
WAV dosya formatının değişken bit oranlarını desteklediğini sanmıyorum. Tüm MP3 kod çözücüler standartlara uygun olması için desteklemesi gerektiğinden, sonuçlarınız kaynak MP3'ün kalitesine ve WAV için seçilen sabit bit hızına bağlı olarak değişse de, herhangi bir MP3 dosyasını sabit bit hızında bir WAV'a dönüştürebilirsiniz. yarattı. Çoğu MP3 çalma yazılımı, çalınmakta olan dosyanın özelliklerini görüntülemenin bir yolunu sunar, böylece ne tür kaynak dosyalar ile uğraştığınızı görmek için birini kullanabilirsiniz.
martineau

Peki ya emir? Sen ne önerirsin?
Soham Dasgupta 13:13

Lütfen Martineau'nun cevabını tekrar okuyunuz. Birkaç hatayı düzelttim. Özellikle, PCM kodlu WAV dosyaları için bit hızını ayarlayamazsınız.
slhck

Yanıtlar:


36

ffprobe song.mp3Komutu kullanarak girdi dosyalarınızın bit hızı hakkında biraz bilgi edinebilirsiniz . Ancak bu yalnızca ilk karenin bit hızını gösterir. MP3 dosyalarındaki VBR genellikle her kare için bit hızını değiştirerek uygulanır, bu yüzden kullanılıp kullanılmadığı sadece ilk karenin başlığını okuyarak belirlenemez. Genellikle VBR'nin kullanılıp kullanılmadığını belirlemek için diğer bazı ses dosyası oynatıcı yazılımlarını kullanıyorum, çoğu bunu gösterecektir (örneğin Foobar2000).

Kayıplı kod çözücüler (MPEG-1 Katman III veya AAC gibi) kullandığınızda, ffmpeg çıkış akımı için varsayılan bir bit hızı veya değişken bir bit hızı seçer. Enkoderin kendisine bağlıdır.

Kayıpsız kodlayıcılar için, her bir örnek önceden tanımlanmış sayıda bit aldığı için değişken bir bit hızı ayarlayamazsınız. ffmpeg -i song.mp3 song.wavbu nedenle size 44,100 Hz örnekleme hızı ve örnek başına 16 bit içeren bir PCM kodlu WAV dosyası sunar. Bu, tüm kap için yaklaşık 1411 kBit / s, sonuçta MP3 giriş dosyasından çok daha büyük bir sonuç verir.

PCM kodlu WAV dosyası için daha küçük bir dosya boyutu istiyorsanız, daha az bit derinliğine sahip bir örnek biçim ayarlayın ( -encoderstam bir liste için seçeneğe bakın ) ve / veya daha düşük bir örnekleme oranı seçin ( -ar 22050örneğin 22.05 kHz kullanır).

İşte ikisini birden yapmanın bir örneği:

ffmpeg -i song.mp3 -acodec pcm_u8 -ar 22050 song.wav

5
PCM sesini bir WAV kabında kodlarsanız, bit hızını ayarlayamazsınız. Mantıklı değil. PCM sıkıştırılmamış bir formattır - saniyede daha fazla veya daha az bit kullanmasını söyleyemezsiniz. Boyutu ayarlamanın tek yolu farklı bir örneklem büyüklüğü kullanmaktır ( -sample_fmtsseçeneğe bakınız ). -ar 128kortalama hızın 44,1 veya 48 kHz yerine örnek hızının 128,000 Hz olacağı anlamına gelir.
slhck

12
Muhtemelen bunu yapmaktan daha ffmpeg -i song.mp3 song.waviyisindir, çünkü uygun bit hızını seçer (ki bu muhtemelen 44.1khz'dir). Eğer
wav'a geçiyorsanız

@ naught101 haklıydı, infact ffpmeg, song.mp3girdi verilerine göre doğru örnekleme bit hızını seçmesine izin vermek daha iyi . Bu şekilde çıktı bitmap wavdosyası en iyi bit hızına sahip olacaktır. Bu, btw'nin dosya boyutunun mükemmel olacağı, ancak verinin donanıma bağlı olduğu anlamına gelir: `Stream # 0: 0: Ses: mp3, 44100 Hz, stereo, s16p, 128 kb / s`
loretoparisi

1
Varsayıcının amacı, elde edilen WAV dosyalarını bir ses CD'sine yazmaktır. Bunun için sadece uygun frekans 44100 Hz'dir, bu nedenle -ar 44100ffmpeg otomatik olarak uygun bir 16-bit codec kullanacak olsa bile şarttır.
Mikhail T.

3

@ Naught101 yorumuna göre, en iyisini tespit etmek için bu işlemi izleyeceğim acodec:

$ ffmpeg -formats | grep PCM 

 DE f32be           PCM 32-bit floating-point big-endian
 DE f32le           PCM 32-bit floating-point little-endian
 DE f64be           PCM 64-bit floating-point big-endian
 DE f64le           PCM 64-bit floating-point little-endian
 DE s16be           PCM signed 16-bit big-endian
 DE s16le           PCM signed 16-bit little-endian
 DE s24be           PCM signed 24-bit big-endian
 DE s24le           PCM signed 24-bit little-endian
 DE s32be           PCM signed 32-bit big-endian
 DE s32le           PCM signed 32-bit little-endian
 DE u16be           PCM unsigned 16-bit big-endian
 DE u16le           PCM unsigned 16-bit little-endian
 DE u24be           PCM unsigned 24-bit big-endian
 DE u24le           PCM unsigned 24-bit little-endian
 DE u32be           PCM unsigned 32-bit big-endian
 DE u32le           PCM unsigned 32-bit little-endian

Bu noktada, arasında seçim yapmak Platformunuzu düşünün big-endian, little-endian, bit hızı seç:

$ ffmpeg -i sample.mp3 
[mp3 @ 0x7fb33180da00] Estimating duration from bitrate, this may be inaccurate
Input #0, mp3, from 'sample.mp3':
  Metadata:
    title           : Saturday
    artist          : Winterwood
    album           : Love In The Heart
    track           : 2/15
    TPA             : 1/1
    encoded_by      : iTunes 11.0.1
    genre           : Country & Folk
    date            : 1997
  Duration: 00:04:27.76, start: 0.000000, bitrate: 128 kb/s
    Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16p, 128 kb/s

Bu ses dosyası bir olduğunu görebiliriz mp3(bu sadece bayt kontrol girdi dosyasının uzantısı rağmen açık değildir) bir bit hızı vardır 128 kb/s, codec oldu s16pörnekleyerek, 44100 Hzbuna göre tercih böylece,:

$ ffmpeg -i sample.mp3 -acodec pcm_s16le -ar 44100 sample.wav


Input #0, mp3, from 'sample.mp3':
  Metadata:
    title           : Saturday
    artist          : Winterwood
    album           : Love In The Heart
    track           : 2/15
    TPA             : 1/1
    encoded_by      : iTunes 11.0.1
    genre           : Country & Folk
    date            : 1997
  Duration: 00:04:27.76, start: 0.000000, bitrate: 128 kb/s
    Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16p, 128 kb/s
File 'sample.wav' already exists. Overwrite ? [y/N] y
Output #0, wav, to 'sample.wav':
  Metadata:
    INAM            : Saturday
    IART            : Winterwood
    IPRD            : Love In The Heart
    IPRT            : 2/15
    TPA             : 1/1
    ITCH            : iTunes 11.0.1
    IGNR            : Country & Folk
    ICRD            : 1997
    ISFT            : Lavf56.4.101
    Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, stereo, s16, 1411 kb/s
    Metadata:
      encoder         : Lavc56.1.100 pcm_s16le
Stream mapping:
  Stream #0:0 -> #0:0 (mp3 (native) -> pcm_s16le (native))
Press [q] to stop, [?] for help
size=   46125kB time=00:04:27.75 bitrate=1411.2kbits/s    
video:0kB audio:46125kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000457%

Eğer mac kullanıyorsanız, sesin white noisebaşında / sonunda yok olup olmadığını kontrol edebilirsiniz (mp3 orijinal sesinde bazı msn / sn ses yoksa):

$ afplay sample.wav

ve tabii ki bitmap'i iki kez kontrol edebilirsiniz:

$ ffmpeg -i sample.wav
Input #0, wav, from 'sample.wav':
  Metadata:
    artist          : Winterwood
    date            : 1997
    genre           : Country & Folk
    title           : Saturday
    album           : Love In The Heart
    track           : 2/15
    encoder         : Lavf56.4.101
    encoded_by      : iTunes 11.0.1
  Duration: 00:04:27.76, bitrate: 1411 kb/s
    Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, 2 channels, s16, 1411 kb/s

0

Ortamı dönüştürmek için ffmpeg kullanın, önce ffprobe kullanarak dosya özelliklerini kontrol edin. bu komutu kullan ffmpeg -i kimberly.wav -acodec pcm_s16le -ar 16000 -ac 1 song.wav

nerede -pcm_s16le is codec 16 bit conversion -ar is sampling rate (16000samples/sec) -ac no of audio channel

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.