2012-08-16 31 views

Respuesta

42

El contenedor wav simplemente agrega un encabezado simple a los datos de PCM en bruto. El encabezado incluye el formato, la frecuencia de muestreo y la cantidad de canales. Como los datos de PCM en bruto no incluyen esta información, deberá especificarla en la línea de comando. Las opciones se especifican antes del archivo al que se aplican, de modo que las opciones antes del archivo de entrada se pueden usar para especificar el formato del archivo de entrada y las opciones después del archivo de entrada y antes de que el archivo de salida se pueda usar para especificar el formato deseado de la salida archivo. Si desea los mismos bits/muestra, frecuencia de muestreo y número de canales en el archivo de salida, entonces no necesita ninguna opción de salida en este caso; el formato del contenedor wav ya está indicado por la extensión del archivo.

ejemplo, para convertir PCM en bruto a WAV:

ffmpeg -f s16le -ar 44.1k -ac 2 -i file.pcm file.wav 
  • -f s16le ... firmado pequeñas muestras endian 16 bits
  • -ar 44.1k ... frecuencia de muestreo de 44,1 kHz
  • -ac 2 ... 2 canales (estéreo)
  • -i file.pcm ... archivo de entrada
  • file.wav ... archivo de salida
+1

¿Qué ocurre con el funcionamiento inverso (PCM a WAV)? –

+2

@ mustafa.yavuz: Esta * es * la operación PCM-a-WAV. – bos

+1

@bos, supongo que @ mustafa.yavuz estaba preguntando al revés (WAV a PCM). Entonces nada especial, simplemente 'ffmpeg -i file.wav file.pcm' lo hará ya que toda la información necesaria para hacer la conversión está en el encabezado del archivo wav. – neevek

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

tener cuidado con formato de datos RAW

-f U8 es sin signo de 8 bits, s16 está firmado por si acaso hay otros

$ 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

Debajo del código debería estar el trabajo:

ffmpeg -f s16le -ar 8000 -ac 2 -i out.pcm -ar 44100 -ac 2 out.wav 
Cuestiones relacionadas