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?
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éefile.wav
… fichier de sortieffmpeg -f s16le -ar 8000 -ac 2 -i out.pcm -ar 44100 -ac 2 out.wav
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
Le code ci-dessous devrait fonctionner:
ffmpeg -f s16le -ar 8000 -ac 2 -i out.pcm -ar 44100 -ac 2 out.wav