Tôi nên sử dụng lệnh nào để chuyển đổi mp3
tệp thành wav
bitrate có biến. Hoặc tốt hơn làm thế nào để tôi biết liệu âm thanh nguồn đó là fixed
bitrate hay variable
?
Tôi nên sử dụng lệnh nào để chuyển đổi mp3
tệp thành wav
bitrate có biến. Hoặc tốt hơn làm thế nào để tôi biết liệu âm thanh nguồn đó là fixed
bitrate hay variable
?
Câu trả lời:
Bạn có thể nhận được một số thông tin về tốc độ bit của các tệp đầu vào của mình bằng cách sử dụng ffprobe song.mp3
lệnh. Tuy nhiên, điều này chỉ cho bạn biết bitrate của khung đầu tiên. VBR trong các tệp MP3 thường được triển khai đơn giản bằng cách thay đổi tốc độ bit cho từng khung, do đó, liệu nó có được sử dụng hay không chỉ bằng cách đọc tiêu đề của khung đầu tiên. Tôi thường sử dụng một số phần mềm trình phát tệp âm thanh khác để xác định xem VBR có đang được sử dụng hay không, vì nhiều người sẽ hiển thị điều đó (ví dụ Foobar2000).
Khi bạn sử dụng codec đầu ra bị mất (như MPEG-1 Layer III hoặc AAC), ffmpeg chọn tốc độ bit mặc định cho luồng đầu ra hoặc bitrate biến. Nó phụ thuộc vào chính bộ mã hóa.
Đối với các codec không mất dữ liệu, bạn không thể đặt bitrate thay đổi, vì mỗi mẫu lấy một số bit được xác định trước. ffmpeg -i song.mp3 song.wav
do đó sẽ giúp bạn có được tệp WAV được mã hóa PCM với tốc độ mẫu 44.100 Hz và 16 bit cho mỗi mẫu. Điều này dẫn đến khoảng 1411 kBit / s cho toàn bộ vùng chứa, có thể lớn hơn nhiều so với tệp đầu vào MP3.
Nếu bạn muốn kích thước tệp nhỏ hơn cho tệp WAV được mã hóa PCM, hãy đặt định dạng mẫu với độ sâu bit ít hơn (xem -encoders
tùy chọn cho danh sách đầy đủ của chúng) và / hoặc chọn tốc độ mẫu thấp hơn ( -ar 22050
ví dụ sẽ sử dụng 22,05 kHz).
Đây là một ví dụ về làm cả hai:
ffmpeg -i song.mp3 -acodec pcm_u8 -ar 22050 song.wav
-sample_fmts
tùy chọn). -ar 128k
có nghĩa là tốc độ mẫu sẽ là 128.000 Hz, thay vì 44,1 hoặc 48 kHz thông thường.
ffmpeg -i song.mp3 song.wav
, vì điều đó sẽ chọn bitrate thích hợp (có thể là 44.1khz). Nếu bạn đang chuyển đổi sang wav, có lẽ bạn không muốn mất thêm thông tin ..
ffpmeg
chọn bitrate lấy mẫu đúng theo song.mp3
dữ liệu đầu vào. Theo cách này, wav
tệp bitmap đầu ra sẽ có tốc độ bit tốt nhất. Điều này có nghĩa là btw rằng kích thước tệp sẽ rất lớn, nhưng với việc quá mức dữ liệu: `Luồng # 0: 0: Âm thanh: mp3, 44100 Hz, âm thanh nổi, s16p, 128 kb / s`
-ar 44100
ngay cả khi ffmpeg sẽ tự động sử dụng codec 16 bit phù hợp.
Theo nhận xét @ naught101, tôi sẽ thực hiện theo quy trình này để phát hiện tốt nhất 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
Tại thời điểm này, hãy xem xét nền tảng của bạn để chọn giữa big-endian
, little-endian
bitrate chọn:
$ 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
Chúng ta có thể thấy rằng tệp âm thanh này là một mp3
(điều này không rõ ràng, mặc dù phần mở rộng của tệp đầu vào, chỉ cần kiểm tra các byte) có bitrate của 128 kb/s
, codec là s16p
, lấy mẫu tại 44100 Hz
, vì vậy chúng tôi chọn theo:
$ 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%
Nếu bạn đang sử dụng mac, bạn có thể kiểm tra âm thanh nếu nó không có white noise
ở đầu / cuối (khi âm thanh gốc mp3 không có âm thanh trong một số msec / giây):
$ afplay sample.wav
và tất nhiên bạn có thể kiểm tra lại 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
Sử dụng ffmpeg để chuyển đổi phương tiện, trước tiên hãy kiểm tra đặc tả tệp bằng ffprobe. sử dụng lệnh này
ffmpeg -i kimberly.wav -acodec pcm_s16le -ar 16000 -ac 1 song.wav
Ở đâu
-pcm_s16le is codec 16 bit conversion
-ar is sampling rate (16000samples/sec)
-ac no of audio channel