Perintah apa yang harus saya gunakan untuk mengonversi mp3
file wav
yang bitrate-nya variabel. Atau lebih baik bagaimana saya tahu apakah sumber audio itu fixed
bitrate atau variable
?
Perintah apa yang harus saya gunakan untuk mengonversi mp3
file wav
yang bitrate-nya variabel. Atau lebih baik bagaimana saya tahu apakah sumber audio itu fixed
bitrate atau variable
?
Jawaban:
Anda bisa mendapatkan info tentang bitrate file input Anda dengan menggunakan ffprobe song.mp3
perintah. Namun ini hanya memberi tahu Anda bitrate dari frame pertama. VBR dalam file MP3 biasanya diimplementasikan hanya dengan mengubah bitrate untuk setiap frame, jadi apakah itu digunakan tidak dapat ditentukan hanya dengan membaca header dari frame pertama. Saya biasanya menggunakan beberapa perangkat lunak pemutar file audio lainnya untuk menentukan apakah VBR sedang digunakan, karena banyak yang akan menampilkannya (misalnya Foobar2000).
Ketika Anda menggunakan codec output lossy (seperti MPEG-1 Layer III atau AAC), ffmpeg memilih bitrate default untuk aliran output, atau bitrate variabel. Itu tergantung pada encoder itu sendiri.
Untuk codec lossless, Anda tidak dapat mengatur bitrate variabel, karena setiap sampel mengambil jumlah bit yang telah ditentukan. ffmpeg -i song.mp3 song.wav
karena itu akan memberi Anda file WAV yang dikodekan PCM dengan laju sampel 44.100 Hz dan 16 bit per sampel. Ini menghasilkan sekitar 1411 kBit / s untuk seluruh wadah, kemungkinan jauh lebih besar dari file input MP3.
Jika Anda menginginkan ukuran file yang lebih kecil untuk file WAV yang dikodekan PCM, tetapkan format sampel dengan kedalaman bit lebih sedikit (lihat -encoders
opsi untuk daftar lengkapnya) dan / atau pilih laju sampel yang lebih rendah (misalnya, -ar 22050
akan menggunakan 22,05 kHz).
Berikut ini contoh melakukan keduanya:
ffmpeg -i song.mp3 -acodec pcm_u8 -ar 22050 song.wav
-sample_fmts
opsi). -ar 128k
berarti bahwa laju sampel akan 128.000 Hz, bukan 44,1 atau 48 kHz biasa.
ffmpeg -i song.mp3 song.wav
, karena itu akan memilih bitrate yang sesuai (yang mungkin 44.1khz). Jika Anda mengonversi ke wav, Anda mungkin tidak ingin kehilangan informasi lebih lanjut ..
ffpmeg
untuk memilih bitrate sampling yang tepat sesuai dengan song.mp3
data input. Dengan cara ini wav
file bitmap keluaran akan memiliki bitrate terbaik. Ini berarti btw bahwa ukuran file akan menjadi besar, tetapi dengan overfitting data: `Streaming # 0: 0: Audio: mp3, 44100 Hz, stereo, s16p, 128 kb / s`
-ar 44100
adalah suatu keharusan bahkan jika ffmpeg secara otomatis akan menggunakan codec 16-bit yang sesuai.
Menurut komentar @ naught101, saya akan mengikuti proses ini untuk mendeteksi yang terbaik 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
Pada titik ini, pertimbangkan platform Anda untuk memilih big-endian
,, little-endian
bitrate pilih:
$ 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
Kita dapat melihat bahwa file audio ini adalah mp3
(ini tidak jelas, meskipun ekstensi dari file input, cukup periksa byte) memiliki bitrate 128 kb/s
, codec s16p
, sampling di 44100 Hz
, jadi kami memilih sesuai:
$ 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%
Jika Anda menggunakan mac Anda dapat memeriksa audio jika tidak ada white noise
di awal / akhir (ketika audio asli mp3 tidak memiliki audio untuk beberapa msec / detik):
$ afplay sample.wav
dan tentu saja Anda dapat mengecek 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
Gunakan ffmpeg untuk mengkonversi media, periksa terlebih dahulu spesifikasi file menggunakan ffprobe. gunakan perintah ini
ffmpeg -i kimberly.wav -acodec pcm_s16le -ar 16000 -ac 1 song.wav
dimana
-pcm_s16le is codec 16 bit conversion
-ar is sampling rate (16000samples/sec)
-ac no of audio channel