查看可用音频设备

ffmpeg -list_devices true -f dshow -i dummy

参考输出:

PS C:\Users\Administrator\Desktop> ffmpeg -list_devices true -f dshow -i dummy
ffmpeg version n4.4.2-2-g7ffb7d4b04-20220623 Copyright (c) 2000-2021 the FFmpeg developers
  built with gcc 11.2.0 (crosstool-NG 1.24.0.533_681aaef)
  configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static --pkg-config=pkg-config --cross-prefix=x86_64-w64-mingw32- --arch=x86_64 --target-os=mingw32 --enable-gpl --enable-version3 --disable-debug --disable-w32threads --enable-pthreads --enable-iconv --enable-libxml2 --enable-zlib --enable-libfreetype --enable-libfribidi --enable-gmp --enable-lzma --enable-fontconfig --enable-libvorbis --enable-opencl --disable-libpulse --enable-libvmaf --disable-libxcb --disable-xlib --enable-amf --enable-libaom --enable-libaribb24 --enable-avisynth --enable-libdav1d --enable-libdavs2 --disable-libfdk-aac --enable-ffnvcodec --enable-cuda-llvm --disable-frei0r --enable-libgme --enable-libass --enable-libbluray --enable-libmp3lame --enable-libopus --enable-librist --enable-libtheora --enable-libvpx --enable-libwebp --enable-lv2 --enable-libmfx --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopenmpt --enable-librav1e --enable-librubberband --enable-schannel --enable-sdl2 --enable-libsoxr --enable-libsrt --enable-libsvtav1 --enable-libtwolame --enable-libuavs3d --disable-libdrm --disable-vaapi --enable-libvidstab --disable-vulkan --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libzimg --enable-libzvbi --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-ldflags=-pthread --extra-ldexeflags= --extra-libs=-lgomp --extra-version=20220623
  libavutil      56. 70.100 / 56. 70.100
  libavcodec     58.134.100 / 58.134.100
  libavformat    58. 76.100 / 58. 76.100
  libavdevice    58. 13.100 / 58. 13.100
  libavfilter     7.110.100 /  7.110.100
  libswscale      5.  9.100 /  5.  9.100
  libswresample   3.  9.100 /  3.  9.100
  libpostproc    55.  9.100 / 55.  9.100
[dshow @ 0000028993552b80] DirectShow video devices (some may be both video and audio devices)
[dshow @ 0000028993552b80]  "USB Video Device"
[dshow @ 0000028993552b80]     Alternative name "@device_pnp_\\?\usb#vid_046d&pid_0825&mi_00#7&19bd2f92&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global"
[dshow @ 0000028993552b80] DirectShow audio devices
[dshow @ 0000028993552b80]  "麦克风 (USB Audio Device)"
[dshow @ 0000028993552b80]     Alternative name "@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{77B4EF5F-D88B-4518-80E9-590D373F7634}"
dummy: Immediate exit requested

其中的"麦克风 (USB Audio Device)"即为音频输入设备,这里是来自USB摄像头。

录制原始PCM音频

ffmpeg -f dshow -i audio="麦克风 (USB Audio Device)" -t 10 -ar 44100 -ac 2 -f s16le ar44100_ac2_s16le_10s.pcm

参数描述:

  • -f dshow: 指定底层音频接口,Windows平台下一般用dshow,表示DirectShow接口,Linux平台一般用alsa,MAC用avfoundation。
  • -i audio="麦克风 (USB Audio Device)": 指定音频输入设备。
  • -t 10: 指定录制时间为10s。
  • -ar 44100: 指定采样率为44100。
  • -ac 2: 指定通道数为2。
  • -f s16le: 指定录制格式为16bit小端PCM。

关于音频录制参数可参考:https://ffmpeg.org/ffmpeg.html#Audio-Options

关于音频不同格式可参考:audio types – FFmpeg

参考输出:

PS C:\Users\Administrator\Desktop> ffmpeg -f dshow -i audio="麦克风 (USB Audio Device)" -t 10 -ar 44100 -ac 2 -f s16le ar44100_ac2_s16le_10s.pcm
ffmpeg version n4.4.2-2-g7ffb7d4b04-20220623 Copyright (c) 2000-2021 the FFmpeg developers
  built with gcc 11.2.0 (crosstool-NG 1.24.0.533_681aaef)
  configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static --pkg-config=pkg-config --cross-prefix=x86_64-w64-mingw32- --arch=x86_64 --target-os=mingw32 --enable-gpl --enable-version3 --disable-debug --disable-w32threads --enable-pthreads --enable-iconv --enable-libxml2 --enable-zlib --enable-libfreetype --enable-libfribidi --enable-gmp --enable-lzma --enable-fontconfig --enable-libvorbis --enable-opencl --disable-libpulse --enable-libvmaf --disable-libxcb --disable-xlib --enable-amf --enable-libaom --enable-libaribb24 --enable-avisynth --enable-libdav1d --enable-libdavs2 --disable-libfdk-aac --enable-ffnvcodec --enable-cuda-llvm --disable-frei0r --enable-libgme --enable-libass --enable-libbluray --enable-libmp3lame --enable-libopus --enable-librist --enable-libtheora --enable-libvpx --enable-libwebp --enable-lv2 --enable-libmfx --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopenmpt --enable-librav1e --enable-librubberband --enable-schannel --enable-sdl2 --enable-libsoxr --enable-libsrt --enable-libsvtav1 --enable-libtwolame --enable-libuavs3d --disable-libdrm --disable-vaapi --enable-libvidstab --disable-vulkan --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libzimg --enable-libzvbi --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-ldflags=-pthread --extra-ldexeflags= --extra-libs=-lgomp --extra-version=20220623
  libavutil      56. 70.100 / 56. 70.100
  libavcodec     58.134.100 / 58.134.100
  libavformat    58. 76.100 / 58. 76.100
  libavdevice    58. 13.100 / 58. 13.100
  libavfilter     7.110.100 /  7.110.100
  libswscale      5.  9.100 /  5.  9.100
  libswresample   3.  9.100 /  3.  9.100
  libpostproc    55.  9.100 / 55.  9.100
Guessed Channel Layout for Input Stream #0.0 : stereo
Input #0, dshow, from 'audio=麦克风 (USB Audio Device)':
  Duration: N/A, start: 117640.941000, bitrate: 1411 kb/s
  Stream #0:0: Audio: pcm_s16le, 44100 Hz, stereo, s16, 1411 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (pcm_s16le (native) -> pcm_s16le (native))
Press [q] to stop, [?] for help
Output #0, s16le, to 'ar44100_ac2_s16le_10s.pcm':
  Metadata:
    encoder         : Lavf58.76.100
  Stream #0:0: Audio: pcm_s16le, 44100 Hz, stereo, s16, 1411 kb/s
    Metadata:
      encoder         : Lavc58.134.100 pcm_s16le
size=    1718kB time=00:00:09.52 bitrate=1477.3kbits/s speed=0.952x
video:0kB audio:1718kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000000%

录制其他格式的音频

录制mp3

ffmpeg -f dshow -i audio="麦克风 (USB Audio Device)" -t 10 -ar 44100 -ac 2 -codec:a libmp3lame -qscale:a 2 output.mp3

相关参数:

  • -codec:a libmp3lame指定音频编码器为libmp3lame,可以简写为-c:a
  • -qscale:a 2这个参数会传递给编码器的-V参数,用于指定CBR参数。

参考链接:Encode/MP3 – FFmpeg

录制aac

ffmpeg -f dshow -i audio="麦克风 (USB Audio Device)" -t 10 -ar 44100 -ac 2 -c:a aac output.m4a

相关参数:

-c:a aac使用FFmpeg自带的aac编码器,也可以使用第三方的编码器,比如Libfdk_aac,但FFmpeg发布时不带libfdk_aac,需要单独编译支持Libfdk_aac的版本。

参考链接:

从视频文件中提取音频

ffmpeg -i xx.mp4 -vn -c:a aac -ar 44100 -channels 2 ss.aac

相关参数:

-vn不需要视频。

-c:a aac指定audio的编码器为aac。

-ar 44100指定音频采样率。

-channels 2双声道。

转换音频编码

ffmpeg -i input.wav -c:a libfdk_aac -profile:a aac_he_v2 -b:a 32k output.m4a






  • 无标签