终于要开始进行FFmpeg实战了,一起来感受一下FFmpeg的强大吧。
命令简介FFmpeg的bin目录中提供了3个命令(可执行程序),可以直接在命令行上使用。
ffmpegffmpeg的主要作用:对音视频进行编解码。
# 将MP3文件转成WAV文件 ffmpeg -i xx.mp3 yy.wav当输入命令ffmpeg时,可以看到ffmpeg命令的使用格式是:
ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...简化一下,常用格式是:
ffmpeg arg1 arg2 -i arg3 arg4 arg5arg1:全局参数
arg2:输入文件参数
arg3:输入文件
arg4:输出文件参数
arg5:输出文件
更多详细用法,可以参考官方文档:ffmpeg-all.html,或者使用以下命令查看:
# 简易版 ffmpeg -h # 详细版 ffmpeg -h long # 完整版 ffmpeg -h full # 或者使用 # ffmpeg -help # ffmpeg -help long # ffmpeg -help full ffprobeffprobe的主要作用:查看音视频的参数信息。
# 可以查看MP3文件的采样率、比特率、时长等信息 ffprobe xx.mp3当输入命令ffprobe时,可以看到ffprobe命令的使用格式是:
ffprobe [OPTIONS] [INPUT_FILE] # OPTIONS:参数 # INPUT_FILE:输入文件更多详细用法,可以参考官方文档:ffprobe-all.html,或者使用以下命令查看:
# 简易版 ffprobe -h # 详细版 ffprobe -h long # 完整版 ffprobe -h full # 或者使用 # ffprobe -help # ffprobe -help long # ffprobe -help full ffplayffplay的主要作用:播放音视频。
# 播放MP3文件 ffplay xx.mp3当输入命令ffplay时,可以看到ffplay命令的使用格式是:
ffplay [options] input_file # options:参数 # input_file:输入文件更多详细用法,可以参考官方文档:ffplay-all.html,或者使用以下命令查看:
# 简易版 ffplay -h # 详细版 ffplay -h long # 完整版 ffplay -h full # 或者使用 # ffplay -help # ffplay -help long # ffplay -help full hide_bannder增加-hide_bannder参数可以隐藏一些冗余的描述信息,可以去实践比较以下2条命令的区别:
ffprobe xx.mp3 ffprobe -hide_banner xx.mp3 # ffmpeg、ffprobe、ffplay都适用 通过命令行录音 查看可用设备使用命令行查看当前平台的可用设备:
ffmpeg -devicesWindows的输出结果如下所示:
列表中有个dshow,全名叫DirectShow,是Windows平台的多媒体系统库
Devices: D. = Demuxing supported .E = Muxing supported -- E caca caca (color ASCII art) output device D dshow DirectShow capture D gdigrab GDI API Windows frame grabber D lavfi Libavfilter virtual input device D libcdio E sdl,sdl2 SDL2 output device D vfwcap VfW video captureMac的输出结果如下所示:
列表中有个avfoundation,是Mac平台的多媒体系统库
我们可以使用avfoundation去操作多媒体输入设备(比如录音设备)
Devices: D. = Demuxing supported .E = Muxing supported -- D avfoundation AVFoundation input device D lavfi Libavfilter virtual input device E sdl,sdl2 SDL2 output device 查看dshow支持的设备 # 查看dshow支持的设备 ffmpeg -list_devices true -f dshow -i dummy # 或者 # ffmpeg -list_devices true -f dshow -i '' # ffmpeg -list_devices true -f dshow -i ""-list_devices true
打印出所有的设备
-f dshow
dshow支持的
-i dummy 或 -i '' 或 -i ""
立即退出
我的笔记本外接了一只麦克风。
因此,命令的执行结果大致如下所示:
DirectShow video devices (some may be both video and audio devices) "Integrated Camera" DirectShow audio devices "线路输入 (3- 魅声T800)" "麦克风阵列 (Realtek(R) Audio)"
dshow支持的视频设备
Integrated Camera:笔记本自带的摄像头
dshow支持的音频设备
线路输入 (3- 魅声T800):外接的麦克风
麦克风阵列 (Realtek(R) Audio):笔记本自带的麦克风
查看avfoundation支持的设备在Mac平台,使用的是avfoundation,而不是dshow。
ffmpeg -list_devices true -f avfoudation -i ''输出结果如下所示:
AVFoundation video devices: [0] FaceTime高清摄像头(内建) [1] Capture screen 0 AVFoundation audio devices: [0] MS-T800 [1] Edu Audio Device [2] MacBook Pro麦克风列表中的MS-T800是外接的麦克风。在Mac上,FFmpeg还给每一个视频、音频设备进行了编号,比如MS-T800的编号是0、Mac自带麦克风的编号是2。
指定设备进行录音 # 使用外接的麦克风进行录音,最后生成一个wav文件 ffmpeg -f dshow -i audio="麦克风阵列 (Realtek(R) Audio)" out.wav # 在Mac上通过编号指定设备 ffmpeg -f avfoundation -i :0 out.wav # :0表示使用0号音频设备 # 0:2表示使用0号视频设备和2号音频设备可以使用快捷键Ctrl + C终止录音
我这边的测试结果显示,默认的音频参数是:
Windows:44100Hz采样率、16位深度、2声道、1411Kbps比特率
Mac:48000Hz采样率、16位深度、2声道、1536Kbps比特率
设置dshow的参数