Quale comando devo usare per convertire un mp3
file il wav
cui bitrate è variabile. O meglio come potrei sapere se l'audio della sorgente è fixed
bitrate o variable
?
Quale comando devo usare per convertire un mp3
file il wav
cui bitrate è variabile. O meglio come potrei sapere se l'audio della sorgente è fixed
bitrate o variable
?
Risposte:
È possibile ottenere alcune informazioni sulla velocità in bit dei file di input utilizzando il ffprobe song.mp3
comando Tuttavia, questo ti dice solo il bitrate del primo fotogramma. Il VBR nei file MP3 di solito viene implementato semplicemente modificando il bitrate per ciascun fotogramma, quindi non è possibile determinare se viene utilizzato leggendo l'intestazione del primo fotogramma. Di solito uso qualche altro software per la riproduzione di file audio per determinare se viene utilizzato VBR, poiché molti lo mostreranno (ad esempio Foobar2000).
Quando si utilizzano codec di output con perdita (come MPEG-1 Layer III o AAC), ffmpeg sceglie un bitrate predefinito per il flusso di output o un bitrate variabile. Dipende dall'encoder stesso.
Per i codec senza perdita di dati, non è possibile impostare un bitrate variabile, poiché ogni campione accetta un numero predefinito di bit. ffmpeg -i song.mp3 song.wav
otterrà quindi un file WAV con codifica PCM con frequenza di campionamento di 44.100 Hz e 16 bit per campione. Ciò comporta circa 1411 kBit / s per l'intero contenitore, probabilmente molto, molto più grande del file di input MP3.
Se si desidera una dimensione del file inferiore per il file WAV con codifica PCM, impostare un formato di esempio con una profondità di bit inferiore (vedere l' -encoders
opzione per un elenco completo di essi) e / o scegliere una frequenza di campionamento inferiore ( -ar 22050
ad esempio, utilizzare 22,05 kHz).
Ecco un esempio di entrambi:
ffmpeg -i song.mp3 -acodec pcm_u8 -ar 22050 song.wav
-sample_fmts
opzione). -ar 128k
significa che la frequenza di campionamento sarà 128.000 Hz, invece dei soliti 44,1 o 48 kHz.
ffmpeg -i song.mp3 song.wav
, in quanto sceglierà il bitrate appropriato (che è probabilmente 44.1khz). Se ti stai convertendo in wav, probabilmente non vorrai perdere ulteriori informazioni ..
ffpmeg
scegliere il bitrate di campionamento giusto in base ai song.mp3
dati di input. In questo modo il wav
file bitmap di output avrà il bitrate migliore. Ciò significa che le dimensioni del file saranno grandi, ma con un overfitting dei dati: `Stream # 0: 0: Audio: mp3, 44100 Hz, stereo, s16p, 128 kb /
-ar 44100
è un must anche se ffmpeg utilizzerà automaticamente un codec a 16 bit adatto.
Secondo il commento di @ naught101, seguirei questo processo per rilevare il meglio 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
A questo punto, prendere in considerazione la vostra piattaforma di scegliere tra big-endian
, little-endian
, della scelta 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
Possiamo vedere che questo file audio è un mp3
(questo non è ovvio, nonostante l'estensione del file di input, basta controllare i byte) ha un bitrate di 128 kb/s
, il codec era s16p
, campionando a 44100 Hz
, quindi scegliamo di conseguenza:
$ 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%
Se sei su Mac puoi controllare l'audio se non ha white noise
all'inizio / fine (quando l'audio originale mp3 non ha audio per alcuni msec / sec):
$ afplay sample.wav
e ovviamente puoi ricontrollare la bitmap:
$ 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
Usa ffmpeg per convertire i media, controlla prima le specifiche del file usando ffprobe. usa questo comando
ffmpeg -i kimberly.wav -acodec pcm_s16le -ar 16000 -ac 1 song.wav
dove
-pcm_s16le is codec 16 bit conversion
-ar is sampling rate (16000samples/sec)
-ac no of audio channel