从 mp4 中提取 wav,同时保持最高质量

从 mp4 中提取 wav,同时保持最高质量

我经历了文档我可以使用以下命令从文件wav中提取文件:mp4

ffmpeg -i my_video.mp4 output_audio.wav

但是,我如何控制文件的质量wav?(例如,我想尽可能地保留原始音频的质量)

答案1

wavwav文件通常包含未压缩的音频,这是使用生成文件时的默认设置ffmpeg。因此,您的命令将保留最高质量,因为没有有损压缩(或任何类型的压缩)来降低质量。

假设原始音频已被压缩,您只需将原始音频(不包含视频)复制到新文件即可保持相同的质量,而不需要未压缩音频所需的大文件大小mp4

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

您也可以对其进行重新编码或将其转换为不同的音频编解码器,但如果该编解码器使用有损压缩,则质量将会下降。

答案2

flv / mp4 to wav / flac / mp3使用ffmpegUbuntu 14.04 中的 2.3.1 版本从视频中提取无损/有损音频( )

访问:http://howto-pages.org/ffmpeg/

首先从源头找到基本数据。在 VLC Player 中打开视频。转到

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

考虑一个输入文件 ( -i),例如,input.mp4或其他文件- flv, avi, ...)。要删除视频 ( ) 并以 44100 Hz 的采样率 ( )-vn提取未压缩的音频 ( ),以脉冲编码调制,使用有符号、16 位、小端 ( ) 样本和 2 个通道 (立体声) ( ),请使用以下命令。output.wav-ar 44100-acodec pcm_s16le-ac 2

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

其他-acodec选项是mp3 flac m4a

-acode flac转换为 24 位文件。对于 16 位采样,应该是

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

wav 和 flac 文件比 mp4 文件大

ac3转换有效-acodec 3F2R/LFE -ac 6但创建了 4 个虚拟轨道,如在 Audacity 中检查的那样。

对于 mp3 转换,只需使用

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

可以通过尝试从终端命令行获取的列表来获得更多输入和输出选项

$ ffmpeg -help

答案3

接受的答案会创建一个 mp4 文件,我想要一个 32 位 wav 文件,这样我就可以在 Pro Tools 中进一步处理它。这是我为此编写的 bash 脚本:

#!/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"

这是一个示例用法:

$ 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%

原始mp4为3.4GB,输出wav为188MB。

相关内容