我经历了文档我可以使用以下命令从文件wav
中提取文件:mp4
ffmpeg -i my_video.mp4 output_audio.wav
但是,我如何控制文件的质量wav
?(例如,我想尽可能地保留原始音频的质量)
答案1
wav
wav
文件通常包含未压缩的音频,这是使用生成文件时的默认设置ffmpeg
。因此,您的命令将保留最高质量,因为没有有损压缩(或任何类型的压缩)来降低质量。
假设原始音频已被压缩,您只需将原始音频(不包含视频)复制到新文件即可保持相同的质量,而不需要未压缩音频所需的大文件大小mp4
:
ffmpeg -i my_video.mp4 -c copy -map 0:a output_audio.mp4
您也可以对其进行重新编码或将其转换为不同的音频编解码器,但如果该编解码器使用有损压缩,则质量将会下降。
答案2
flv / mp4 to wav / flac / mp3
使用ffmpeg
Ubuntu 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。