web-dev-qa-db-fra.com

Ffmpeg peut-il convertir l'audio du PCM brut en WAV?

Je peux convertir un fichier wav en pcm

ffmpeg -i file.wav -f s16le -acodec pcm_s16le file.pcm

Comment puis-je annuler cette opération?

32
xXx_CodeMonkey_xXx

Le conteneur wav ajoute simplement un en-tête simple aux données PCM brutes. L'en-tête comprend le format, la fréquence d'échantillonnage et le nombre de canaux. Étant donné que les données PCM brutes ne contiennent pas ces informations, vous devrez les spécifier sur la ligne de commande. Les options sont spécifiées avant le fichier auquel elles s'appliquent, ainsi les options avant le fichier d'entrée peuvent être utilisées pour spécifier le format du fichier d'entrée, et les options après le fichier d'entrée et avant le fichier de sortie peuvent être utilisées pour spécifier le format souhaité de la sortie fichier. Si vous voulez les mêmes bits/échantillon, taux d'échantillonnage et nombre de canaux dans le fichier de sortie, vous n'avez pas besoin d'options de sortie dans ce cas; le format du conteneur wav est déjà indiqué par l'extension de fichier.

Exemple pour convertir un PCM brut en WAV:

ffmpeg -f s16le -ar 44.1k -ac 2 -i file.pcm file.wav
  • -f s16le… Petits échantillons endian 16 bits signés
  • -ar 44.1k… Fréquence d'échantillonnage 44,1 kHz
  • -ac 2… 2 canaux (stéréo)
  • -i file.pcm… Fichier d'entrée
  • file.wav … fichier de sortie
57
mark4o
ffmpeg -f s16le -ar 8000 -ac 2 -i out.pcm -ar 44100 -ac 2 out.wav
6
olegog

Soyez prudent avec le format de données RAW

-f u8 n'est pas signé 8 bits, s16 est signé juste au cas où il y en aurait d'autres

 $ 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
5
barney

Le code ci-dessous devrait fonctionner:

ffmpeg -f s16le -ar 8000 -ac 2 -i out.pcm -ar 44100 -ac 2 out.wav
0
Jerry Dai