版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

...

FFmpeg命令行音频相关操作

...

查看可用音频设备

代码块
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%


录制

从视频中提取音频:

示例1:

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

-vn: no videos,不需要视频

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

-ar 44100 指定音频采样率

-channels 2 双声道

TODO:待测试。

FFmpeg API采集音频

TODO

FFmpeg命令行音频编码转换

示例2:

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


FFmpeg API音频编码转换

TODO






目录