Jakiego polecenia powinienem użyć do konwersji mp3
pliku, wav
którego bitrate jest zmienny. Albo lepiej, skąd mam wiedzieć, czy to źródło audio ma fixed
bitrate czy variable
?
Jakiego polecenia powinienem użyć do konwersji mp3
pliku, wav
którego bitrate jest zmienny. Albo lepiej, skąd mam wiedzieć, czy to źródło audio ma fixed
bitrate czy variable
?
Odpowiedzi:
Możesz uzyskać informacje o przepływności plików wejściowych za pomocą ffprobe song.mp3
polecenia. Jednak mówi to tylko o przepływności pierwszej klatki. VBR w plikach MP3 jest zwykle implementowany po prostu przez zmianę szybkości transmisji dla każdej klatki, więc tego, czy jest on używany, nie można ustalić, po prostu czytając nagłówek pierwszej klatki. Zwykle używam innego oprogramowania do odtwarzania plików audio, aby ustalić, czy używany jest VBR, ponieważ wielu to wyświetli (na przykład Foobar2000).
Gdy używasz stratnych kodeków wyjściowych (takich jak MPEG-1 Layer III lub AAC), ffmpeg wybiera domyślną szybkość transmisji dla strumienia wyjściowego lub zmienną szybkość transmisji. To zależy od samego enkodera.
W przypadku bezstratnych kodeków nie można ustawić zmiennej przepływności, ponieważ każda próbka przyjmuje określoną liczbę bitów. ffmpeg -i song.mp3 song.wav
dostaniesz zatem plik WAV zakodowany w PCM o częstotliwości próbkowania 44,100 Hz i 16 bitach na próbkę. Powoduje to około 1411 kBit / s dla całego kontenera, prawdopodobnie znacznie, znacznie większy niż plik wejściowy MP3.
Jeśli chcesz mieć mniejszy rozmiar pliku WAV zakodowanego w PCM, ustaw format próbny o mniejszej głębi bitowej (zobacz -encoders
opcję, aby uzyskać pełną listę tych plików ) i / lub wybierz niższą częstotliwość próbkowania ( -ar 22050
na przykład użyłby 22,05 kHz).
Oto przykład zrobienia obu:
ffmpeg -i song.mp3 -acodec pcm_u8 -ar 22050 song.wav
-sample_fmts
opcja). -ar 128k
oznacza, że częstotliwość próbkowania wyniesie 128 000 Hz, zamiast zwykłych 44,1 lub 48 kHz.
ffmpeg -i song.mp3 song.wav
będzie, jeśli wybierzesz odpowiednią szybkość transmisji (prawdopodobnie 44,1 kHz). Jeśli
ffpmeg
wybrać właściwy bitrate próbkowania zgodnie z song.mp3
danymi wejściowymi. W ten sposób wyjściowy wav
plik bitmapy będzie miał najlepszą przepływność. Oznacza to, że rozmiar pliku będzie świetny, ale przy przeładowaniu danych: `Strumień # 0: 0: Audio: mp3, 44100 Hz, stereo, s16p, 128 kb / s`
-ar 44100
jest to konieczne, nawet jeśli ffmpeg automatycznie użyje odpowiedniego 16-bitowego kodeka.
Według komentarza @ naught101 śledzę ten proces, aby wykryć najlepsze 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
W tym momencie, należy rozważyć swoją platformę do wyboru big-endian
, little-endian
The wybrać bitrate:
$ 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
Widzimy, że ten plik audio jest mp3
(nie jest to oczywiste, pomimo rozszerzenia pliku wejściowego, po prostu sprawdź bajty) ma bitrate 128 kb/s
, kodek był s16p
, próbkowanie na 44100 Hz
, więc wybieramy odpowiednio:
$ 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%
Jeśli korzystasz z systemu Mac, możesz sprawdzić dźwięk, jeśli nie ma go white noise
na początku / końcu (gdy oryginalne audio MP3 nie ma dźwięku przez kilka ms / s):
$ afplay sample.wav
i oczywiście możesz dwukrotnie sprawdzić mapę bitową:
$ 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
Użyj ffmpeg do konwersji mediów, najpierw sprawdź specyfikację pliku za pomocą ffprobe. użyj tego polecenia
ffmpeg -i kimberly.wav -acodec pcm_s16le -ar 16000 -ac 1 song.wav
gdzie
-pcm_s16le is codec 16 bit conversion
-ar is sampling rate (16000samples/sec)
-ac no of audio channel