57 votes

Extraction de wav à partir de mp4 tout en préservant la meilleure qualité possible

J'ai traversé la documentation et je peux extraire un wav à partir d'un fichier mp4 avec la commande :

ffmpeg -i my_video.mp4 output_audio.wav

Cependant, comment puis-je contrôler la qualité de la wav fichier ? (par exemple, si je veux préserver la qualité de l'audio original autant que possible)

45voto

Jukurrpa Points 1169

Extraction d'audio sans perte/avec perte à partir de vidéos ( flv / mp4 to wav / flac / mp3 ) Utilisation ffmpeg version 2.3.1 sous Ubuntu 14.04

Visiter : http://howto-pages.org/ffmpeg/

Il faut tout d'abord trouver les données de base à partir de la source. Ouvrez la vidéo dans VLC Player. Allez à

> Tools > Codec Information 
> Stream 0 (Video/ Codec/ Resolution/ Frame rate) 
> Stream 1 (Audio/ Codec/ Channel/ Sample rate)

Considérons un fichier d'entrée ( -i ), tels que input.mp4 ou d'autres fichiers - flv, avi, ... ). Pour supprimer la vidéo ( -vn ) et de sortir l'audio non compressé ( output.wav ) à une fréquence d'échantillonnage de 44100 Hz ( -ar 44100 ) en code pulsé modulé avec signature, 16 bits, petit endian ( -acodec pcm_s16le ) et 2 canaux (stéréo) ( -ac 2 ), utilisez la commande suivante.

ffmpeg -i input.mp4 -vn -acodec pcm_s16le -ar 44100 -ac 2 output.wav

Autres -acodec Les options sont les suivantes mp3 flac m4a .

-acode flac convertit en fichier 24 bits. Pour un échantillonnage de 16 bits, il faut

ffmpeg -i input.mp4 -acodec flac -bits_per_raw_sample 16 -ar 44100 output.flac

les fichiers wav et flac sont plus volumineux que les fichiers mp4

ac3 la conversion fonctionne avec -acodec 3F2R/LFE -ac 6 mais crée 4 pistes fictives, comme vérifié dans Audacity.

Pour la conversion en mp3, il suffit d'utiliser

ffmpeg -i input.mp4 -vn -acodec mp3 -ab 320k -ar 44100 -ac 2 output.mp3

Il est possible d'obtenir plus d'options pour l'entrée et la sortie en essayant la liste obtenue à partir de la ligne de commande sur le terminal

$ ffmpeg -help

26voto

Danny Staple Points 348

wav contiennent généralement de l'audio non compressé, et c'est l'option par défaut lors de la production d'un fichier wav en utilisant ffmpeg . Votre commande préservera donc déjà la qualité maximale, puisqu'il n'y a pas de compression avec perte (ou de compression de quelque nature que ce soit) pour réduire la qualité.

En supposant que l'audio d'origine soit compressé, vous pouvez conserver la même qualité sans la taille de fichier nécessaire pour l'audio non compressé en copiant simplement l'audio d'origine (sans la vidéo) dans un nouveau fichier mp4 fichier :

ffmpeg -i my_video.mp4 -c copy -map 0:a output_audio.mp4

Vous pouvez également le réencoder ou le convertir dans un codec audio différent, mais si ce codec utilise une compression avec perte, la qualité sera perdue.

1voto

Mike Slinn Points 111

La réponse acceptée crée un fichier mp4, je voulais un fichier wav 32 bits, pour pouvoir le retravailler dans Pro Tools. Voici un script bash script que j'ai écrit pour faire cela :

#!/bin/bash

# $1 Input file path, no filetype
# See https://trac.ffmpeg.org/wiki/audio%20types

function help {
  if [ "$1" ]; then printf "$1\n\n"; fi
  echo "$(basename $0) - Extract audio stream from an mp4 file and save as 32-bit wav

Usage: $(basename $0) filename
"
  exit 1
}

if [ -z "$1" ]; then help "Error: no media file name specified"; fi

if [ ! -f "$1.mp4" ]; then help "Error: '$1.mp4' not found"; fi

ffmpeg \
  -i "$1.mp4" \
  -vn \
  -acodec pcm_f32le \
  -ar 44100 \
  -ac 2 \
  "$1.wav"

Il s'agit d'un exemple d'utilisation :

$ mp4ToWav "Video Files/Descending C to G djembe"
ffmpeg version 4.3.2-0+deb11u1ubuntu1 Copyright (c) 2000-2021 the FFmpeg developers
  built with gcc 10 (Ubuntu 10.2.1-20ubuntu1)
  configuration: --prefix=/usr --extra-version=0+deb11u1ubuntu1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-pocketsphinx --enable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-nvenc --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
  libavutil      56. 51.100 / 56. 51.100
  libavcodec     58. 91.100 / 58. 91.100
  libavformat    58. 45.100 / 58. 45.100
  libavdevice    58. 10.100 / 58. 10.100
  libavfilter     7. 85.100 /  7. 85.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  7.100 /  5.  7.100
  libswresample   3.  7.100 /  3.  7.100
  libpostproc    55.  7.100 / 55.  7.100
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x55fc3d8d1f80] st: 0 edit list: 1 Missing key frame while searching for timestamp: 1001
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x55fc3d8d1f80] st: 0 edit list 1 Cannot find an index entry before timestamp: 1001.
Guessed Channel Layout for Input Stream #0.1 : stereo
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'Video Files/Descending C to G djembe.mp4':
  Metadata:
    major_brand     : XAVC
    minor_version   : 16785407
    compatible_brands: XAVCmp42iso2
    creation_time   : 2021-10-31T19:00:25.000000Z
  Duration: 00:09:06.55, start: 0.000000, bitrate: 51575 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709/bt709/iec61966-2-4), 1920x1080 [SAR 1:1 DAR 16:9], 49492 kb/s, 59.94 fps, 59.94 tbr, 60k tbn, 119.88 tbc (default)
    Metadata:
      creation_time   : 2021-10-31T19:00:25.000000Z
      handler_name    : Video Media Handler
      encoder         : AVC Coding
    Stream #0:1(und): Audio: pcm_s16be (twos / 0x736F7774), 48000 Hz, stereo, s16, 1536 kb/s (default)
    Metadata:
      creation_time   : 2021-10-31T19:00:25.000000Z
      handler_name    : Sound Media Handler
    Stream #0:2(und): Data: none (rtmd / 0x646D7472), 491 kb/s (default)
    Metadata:
      creation_time   : 2021-10-31T19:00:25.000000Z
      handler_name    : Timed Metadata Media Handler
      timecode        : 07:09:43:54
Stream mapping:
  Stream #0:1 -> #0:0 (pcm_s16be (native) -> pcm_f32le (native))
Press [q] to stop, [?] for help
Output #0, wav, to 'Video Files/Descending C to G djembe.wav':
  Metadata:
    major_brand     : XAVC
    minor_version   : 16785407
    compatible_brands: XAVCmp42iso2
    ISFT            : Lavf58.45.100
    Stream #0:0(und): Audio: pcm_f32le ([3][0][0][0] / 0x0003), 44100 Hz, stereo, flt, 2822 kb/s (default)
    Metadata:
      creation_time   : 2021-10-31T19:00:25.000000Z
      handler_name    : Sound Media Handler
      encoder         : Lavc58.91.100 pcm_f32le
size=  188304kB time=00:09:06.55 bitrate=2822.4kbits/s speed= 153x
video:0kB audio:188304kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000059%

Le mp4 d'origine faisait 3,4 Go, le wav de sortie faisait 188 Mo.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X