首页 > 其他分享 >07_音频录制01_命令行

07_音频录制01_命令行

时间:2022-10-04 14:23:55浏览次数:82  
标签:dshow 01 07 音频 ffprobe devices ffplay audio ffmpeg

终于要开始进行FFmpeg实战了,一起来感受一下FFmpeg的强大吧。

命令简介

FFmpeg的bin目录中提供了3个命令(可执行程序),可以直接在命令行上使用。

3个命令

ffmpeg

ffmpeg的主要作用:对音视频进行编解码。

# 将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 arg5
  • arg1:全局参数
  • arg2:输入文件参数
  • arg3:输入文件
  • arg4:输出文件参数
  • arg5:输出文件

更多详细用法,可以参考官方文档:ffmpeg-all.html,或者使用以下命令查看:

# 简易版
ffmpeg -h
# 详细版
ffmpeg -h long
# 完整版
ffmpeg -h full

# 或者使用
# ffmpeg -help
# ffmpeg -help long
# ffmpeg -help full

ffprobe

ffprobe的主要作用:查看音视频的参数信息。

# 可以查看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

ffplay

ffplay的主要作用:播放音视频。

# 播放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_banner

增加-hide_bannder参数可以隐藏一些冗余的描述信息,可以去实践比较以下2条命令的区别:

ffprobe xx.mp3

ffprobe -hide_banner xx.mp3

# ffmpeg、ffprobe、ffplay都适用

通过命令行录音

查看可用设备

使用命令行查看当前平台的可用设备:

ffmpeg -devices

Windows的输出结果如下所示:

  • 列表中有个dshow,全名叫DirectShow,是Windows平台的多媒体系统库
  • 我们可以使用dshow去操作多媒体输入设备(比如录音设备)
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 capture

Mac的输出结果如下所示:

  • 列表中有个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 -f dshow -list_devices true -i dummy

# 或者
# ffmpeg -list_devices true -f dshow -i ''
# ffmpeg -list_devices true -f dshow -i ""
  • -f dshow

    • dshow支持的
  • -list_devices true

    • 打印出所有的设备
  • -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 -f avfoundation -list_devices true -i ''	

输出结果如下所示:

AVFoundation video devices:
 [0] FaceTime高清摄像头(内建)
 [1] Capture screen 0
AVFoundation audio devices:
 [0] MS-T800
 [1] 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 :2 out.wav
# :0表示使用0号音频设备
# 0:2表示使用0号视频设备和2号音频设备
  • 可以使用快捷键Ctrl + C终止录音
  • 我这边的测试结果显示,音频参数是:
    • Windows:44100Hz采样率、16位深度、2声道、1411Kbps比特率
    • Mac:48000Hz采样率、16位深度、2声道、1536Kbps比特率

设置dshow的参数

先通过命令查看一下dshow可以使用的参数,详情可以查看官方文档:dshow参数

# 从ffmpeg -devices命令的结果可以看得出来:dshow属于demuxer,而不是muxer
ffmpeg -h demuxer=dshow

部分输出结果如下所示:

# 采样率
-sample_rate         <int> set audio sample rate (from 0 to INT_MAX)
# 采样大小(位深度)
-sample_size         <int> set audio sample size (from 0 to 16)
# 声道数
-channels            <int> set number of audio channels, such as 1 or 2 (from 0 to INT_MAX)
# 列出特定设备支持的参数
-list_options        <boolean> list available options for specified device (default false)

然后再看看你的设备支持哪些参数。

ffmpeg -f dshow -list_options true -i audio="麦克风阵列 (Realtek(R) Audio)"

输出结果如下所示:

DirectShow audio only device options (from audio devices)
  Pin "Capture" (alternative pin name "Capture")
  min ch=1 bits=8 rate= 11025 max ch=2 bits=16 rate= 44100
  
# 可以看出来:采样率范围是11025~44100Hz

接下来设置录音时的音频参数。

ffmpeg -f dshow -sample_rate 15000 -sample_size 16 -channels 1 -i audio="麦克风阵列 (Realtek(R) Audio)" out.wav

标签:dshow,01,07,音频,ffprobe,devices,ffplay,audio,ffmpeg
From: https://www.cnblogs.com/zuojie/p/16753698.html

相关文章

  • 0766-6.3.3-如何实现Kafka跨网络访问
    文档说明在使用Kafka时会遇到内外网的场景,即Kafka集群使用内网搭建,在内网和外网均有客户端需要消费Kafka的消息,同时在集群内由于使用内网环境通信,因此不必太过考虑通信的加......
  • 013——static静态关键字
    1.static静态关键字1.1static是什么,static修饰成员变量的用法1.1.1static是什么?static是静态的意思,可以用来修饰成员变量、成员方法。static修饰成员变量之后称为......
  • 01_Mac安装Homebrew
    目录1官方1.1前提1.2安装2其他安装方法2.1安装homebrew-core2.2安装homebrew-cask3源3.1查看源3.2设置源3.3设置bottles镜像3.4重置为官方源4卸载1官方Home......
  • 03_重识音频
    目录PCM采样采样率采样定理量化位深度编码其他概念声道(Channel)比特率信噪比音频的编码与解码编码(Encode)解码(Decode)常见的音频编码和文件格式无损Monkey'sAudioFLACALAC有......
  • Luogu P5089 [eJOI2018] 元素周期表 题解
    (从洛谷博客搬过来的)这道题嘛..主要还是找性质推规律。拿到题,第一眼:噢噢爆搜啊。第二眼:噢噢贪心啊。第三眼:很好贪心假了。然后苦思冥想半个小时去看题解。看到兔队的......
  • Luogu P6937 [ICPC2017 WF]Secret Chamber at Mount Rushmore
    (从洛谷博客搬过来的)简要题意:告诉你可以从哪些字符转化为哪些字符,然后再问你某一个字符串能否转化为另一个字符串。这里提供两种做法:爆搜和传递闭包。算法一爆搜看到......
  • 【Vue.js入门到实战教程】15-ES 2015 新特性一览
    ​技术栈选择前面我们介绍了从Laravel8开始,自带的前端UI脚手架扩展包Jetstream不再基于Vue作为默认的组件开发技术栈,以便降低后端新手入门前端组件开发的学习成本......
  • <<程序员修炼之道:从小工到专家>>阅读笔记01
       <<程序员修炼之道:从小工到专家>>阅读笔记01第一章注重实效的哲学1.注重实效的程序员的特征:是他们处理问题、寻求解决方案时的态度、风格、哲学。设法把问题放......
  • AGC014
    A若存在答案则答案是\(\mathcal{O}(\loga)\)的,直接模拟即可。B可以发现有解当且仅当给出的\(m\)条边存在欧拉回路。C\((\texttt{Easy}\1/0)\)删掉的障碍是......
  • P1941 [NOIP2014 提高组] 飞扬的小鸟
    [NOIP2014提高组]飞扬的小鸟题目描述FlappyBird是一款风靡一时的休闲手机游戏。玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的......