2012-08-16 43 views

Trả lời

42

Vùng chứa wav chỉ thêm tiêu đề đơn giản vào dữ liệu PCM thô. Tiêu đề bao gồm định dạng, tỷ lệ mẫu và số kênh. Vì dữ liệu PCM thô không bao gồm thông tin này, bạn sẽ cần xác định nó trên dòng lệnh. Các tùy chọn được chỉ định trước khi tệp áp dụng, vì vậy các tùy chọn trước tệp đầu vào có thể được sử dụng để chỉ định định dạng của tệp đầu vào và các tùy chọn sau tệp đầu vào và trước khi tệp đầu ra có thể được sử dụng để chỉ định định dạng đầu ra mong muốn tập tin. Nếu bạn muốn cùng một bit/mẫu, tỷ lệ mẫu và số kênh trong tệp đầu ra thì bạn không cần bất kỳ tùy chọn đầu ra nào trong trường hợp này; định dạng vùng chứa wav đã được chỉ định bởi phần mở rộng của tệp.

Ví dụ để chuyển đổi PCM thô sang WAV:

ffmpeg -f s16le -ar 44.1k -ac 2 -i file.pcm file.wav 
  • -f s16le ... ký 16-bit mẫu về cuối nhỏ
  • -ar 44.1k ... tỷ lệ mẫu 44.1kHz
  • -ac 2 ... 2 kênh (stereo)
  • -i file.pcm… tệp đầu vào
  • file.wav ... tập tin đầu ra
+1

Điều gì về hoạt động ngược (PCM sang WAV)? –

+2

@ mustafa.yavuz: Đây là * hoạt động PCM-to-WAV. – bos

+1

@bos, tôi đoán @ mustafa.yavuz đã yêu cầu đảo ngược (WAV sang PCM). Sau đó, không có gì đặc biệt, chỉ cần 'ffmpeg -i file.wav file.pcm' sẽ làm vì tất cả thông tin cần thiết để thực hiện chuyển đổi nằm trong tiêu đề của tệp wav. – neevek

4
ffmpeg -f s16le -ar 8000 -ac 2 -i out.pcm -ar 44100 -ac 2 out.wav 
3

Hãy cẩn thận với định dạng dữ liệu RAW

-f u8 là unsigned 8 bit, S16 được ký kết chỉ trong trường hợp có những người khác

$ ffmpeg -formats | grep PCM 
DE alaw   PCM A-law 
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 mulaw   PCM mu-law 
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 s8    PCM signed 8-bit 
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 
DE u8    PCM unsigned 8-bit 
0

Mã bên dưới phải hoạt động:

ffmpeg -f s16le -ar 8000 -ac 2 -i out.pcm -ar 44100 -ac 2 out.wav 
Các vấn đề liên quan