Bit hızı değişken olan bir mp3
dosyayı dönüştürmek için hangi komutu kullanmalıyım wav
. Ya da daha iyisi bu kaynak sesin fixed
bit hızda mı olduğunu nasıl bilebilirim variable
?
Bit hızı değişken olan bir mp3
dosyayı dönüştürmek için hangi komutu kullanmalıyım wav
. Ya da daha iyisi bu kaynak sesin fixed
bit hızda mı olduğunu nasıl bilebilirim variable
?
Yanıtlar:
ffprobe song.mp3
Komutu 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.wav
bu 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 ( -encoders
tam 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
-sample_fmts
seçeneğe bakınız ). -ar 128k
ortalama hızın 44,1 veya 48 kHz yerine örnek hızının 128,000 Hz olacağı anlamına gelir.
ffmpeg -i song.mp3 song.wav
iyisindir, çünkü uygun bit hızını seçer (ki bu muhtemelen 44.1khz'dir). Eğer
ffpmeg
, song.mp3
girdi verilerine göre doğru örnekleme bit hızını seçmesine izin vermek daha iyi . Bu şekilde çıktı bitmap wav
dosyası 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`
-ar 44100
ffmpeg otomatik olarak uygun bir 16-bit codec kullanacak olsa bile şarttır.
@ 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 Hz
buna 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 noise
başı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
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