1. pcm转wav

ffmpeg -f s16le -ar 16k -ac 1 -i input.pcm output.wav

-f format 可以用-formats查看支持的格式,s16le代表pcm16位有符号小端存储
-ar audio rate 采样率,单位是Hz,每秒的采样数
-ac audio channel数,一般默认是1
-i 输入

2. wav转pcm

 ffmpeg -i input.wav -f s16le -ar 48000 -ac 1 -acodec pcm_s16le output.pcm

-acodec 编码器格式

3. wav重采样

ffmpeg -i input.wav -ar 48000 output.wav

4. 把两个单通道的wav合成一个双通道的wav

ffmpeg -i left.wav -i right.wav -filter_complex "[0]apad[FL];[FL][1]amerge[aout]" -map  "[aout]" out.wav

滤镜查询地址 https://ffmpeg.org/ffmpeg-filters.html
-filter_complex 后面加一个滤镜
apad 静音填充 输入[0]静音填充输出为[FL]
amerge 两个或多个音频合并为一个多声道流 [FL][0]合成为[aout]
-map 映射输出到输出文件

5. 两个音频叠加

ffmpeg -i ${speechpath} -i ${noisepath} \
-filter_complex \
"amovie=${speechpath} [s];amovie=${noisepath} [n]; \
[s] adelay=${delay}ms [s1]; \
[n][s1]amix=inputs=2:duration=longest:dropout_transition=3:weights='${a} ${b}'" \
${outpath}

● amovie 相当于给输入重命名,否则用[0] [1]
● 分号用来把单个filter隔开,冒号分割参数
● adelay是将输入延迟
● amix用来合成
● 思路为通过三个随机数,即延迟和两个权重来进行随机控制,将语音随机延迟之后和噪声进行合成

6. 获取音频的长度,并转化为毫秒

duration=$(ffmpeg -i ${speechpath} 2>&1 \| grep 'Duration' | cut -d ' ' -f 4 | sed s/,//)
ss=$(awk "BEGIN{print ${duration:0:2}*3600000+ \${duration:3:2}*60000+ \${duration:6:2}*1000+ \${duration:9:2}*10}") #语音毫秒数

● 把ffmpeg的输出重定向,获取到Duration的行,使用cut命令用空格分开,得到第四列,把逗号删除掉
● 毫秒数直接用awk来计算

7. 干掉音频前后的静音部分

在处理正样本语音部分很有用

ffmpeg -i ${voicedir}/${filename} -filter_complex \
silenceremove=start_periods=1:start_duration=0.1:start_threshold=-50dB: \
stop_periods=-1:stop_duration=0.1:stop_threshold=-50dB \
${outdir}/${filename}

● start开头的一组参数是干掉音频开头小于-50dB且时长大于0.1s的静音
● stop开头的一组是干掉完开头之后,再干掉结尾小于-50dB且长度大于0.1s的静音
● stop只有在start设置了的情况下有效

8. 截取前后两部分并将后前填充0

ffmpeg -i input.wav -filter_complex "[0]atrim=0:1.05[l];[l]apad=whole_len=32000" out.wav
ffmpeg -i input.wav -filter_complex "0[atrim]=1.05:2[r];[r]adelay=1050" out.wav

● atrim 的单位是秒 支持小数
● adelay单位是ms
● apad的单位是采样数

【FFMpeg 命令行】基本应用相关推荐

  1. 【FFmpeg】Windows 搭建 FFmpeg 命令行运行环境

    文章目录 前言 一.下载 FFMPEG 二.拷贝可执行文件 三.拷贝动态库文件 四.运行 ffmpeg 命令 总结 前言 Android 中需要使用到 FFMPEG , 先在 Windows 中搭建一 ...

  2. 使用ffmpeg 命令行解码并显示像素格式为.raw图像

    使用ffmpeg 命令行解码并显示像素格式为.raw图像,命令如下: ffmpeg -vcodec rawvideo -f rawvideo -pix_fmt bayer_gbrg8 -s 2448* ...

  3. FFmpeg命令行(ffmpeg、ffplay、ffprobe)

    ffmpeg命令行 A command line tool to convert multimedia files between formats. 名称 命令 解释 查看当前设备输入信息 ffmpe ...

  4. FFmpeg命令行解析

    目录标题 一.引言(Introduction) 1.1 FFmpeg简介(Overview of FFmpeg) 1.2 FFmpeg命令行的应用场景(Application Scenarios of ...

  5. Android 下使用 FFmpeg 命令行工具与问题排查

    目录 FFmpeg 命令行工具 将相关文件加入到项目中 修改 ffmpeg 源码 问题排查 上一篇文章 中,我们已经成功编译了 FFmpeg 的主要库并集成到了我们的 Android 应用中.我们暂时 ...

  6. FFmpeg命令行工具系列二---转码流程及过滤器

    一.概述 在FFmpeg命令行工具系列一中,对FFmpeg的命令行工具FFmpeg.exe进行了简单的介绍,并举出了几个简单的例子.在这一章中,将进行一次详细的介绍,主要是对转码过程和过滤器进行介绍. ...

  7. [总结]FFMPEG命令行工具之ffmpeg详解

    目录 0 前言 1 语法 Synopsis 2 描述 Description 3 详细描述 Detailed description 3.1 滤镜 Filtering 3.1.1 简单滤镜图 Simp ...

  8. FFmpeg命令行,从小白入门到收藏吃灰——基础归纳

    1.查看版本号和功能支持 到官网 http://ffmpeg.org/download.html 下载已经编译好的ffmpeg,选用的是Windows环境下.的BtbN/FFmpeg-Builds/A ...

  9. [总结]FFMPEG命令行工具之ffplay详解

    目录 0 前言 1 语法 Synopsis 2 描述 Description 3 选项 Options 3.1 流指定器 Stream specifiers 3.2 通用选项 Generic opti ...

  10. [总结]FFMPEG命令行工具之ffprobe详解

    目录 0 前言 1 语法 Synopsis 2  描述 Description 3 选项 Options 3.1 流指定器 Stream specifiers 3.2 通用选项 Generic opt ...

最新文章

  1. lisp修改天正标高值_【求教】如何批量修改天正字体
  2. dfa转正则表达式_从0到1打造正则表达式执行引擎(二)
  3. eclipse项目导入到AndroidStudioc报错
  4. PHP命令行脚本接收传入参数的三种方式
  5. 用JAVA实现小学四则运算
  6. linux64位版本 小米球内网穿透后台启动 centos8 安装 screen 报错:No match for argument: screen
  7. 学校图书馆管理系统/图书管理系统的设计与实现
  8. js正则表达式限定输入框内容为非负数
  9. android 多个按键精灵,Android 一种通用的按键精灵的实现思路
  10. 终身教职让美国研究型大学称霸世界,却把中国「青椒」卷怕了!
  11. OpenStack Placement部署(5)
  12. Greenplum集群部署和架构优化,我总结了5000字的心得
  13. gta5因为计算机丢失,GTA5丢失MSVCR100.dll怎么办 修复方法介绍
  14. extundelete工具恢复rm -rf 删除的目录(ext4、ext3)
  15. 李晓慧:如何利用MongoDB打造爆款小程序
  16. HTML外部样式表如何引入CSS样式
  17. Ubuntu18.04|20.04 idea安装Consolas字体
  18. [工具] 护眼宝 – 傻瓜版屏幕蓝光过滤应用[Win/Android]
  19. zencart商品批量设置为免运费
  20. 【OpenAirInterface】分立部署核心网与容器化ueransim仿真基站

热门文章

  1. 2.从键盘输入自己的姓名拼音(用小写输入),将首字母变为大写后在屏幕上输出。有没有汇编方面的大神教教我,我现在还是个新手
  2. 将阿拉伯数字转换成罗马数字 Integer to Roman
  3. 易语言安卓模拟器adb模块制作认识adb
  4. 商标权的取得方式有哪些
  5. C#取得DataTable最大值、最小值
  6. 数据驱动「付费转化」的3个思路
  7. [论文阅读]Structure-from-Motion Revisited
  8. 招聘移动全栈工程师(iOS 方向)
  9. 使用Python获取股市融资融券数据并绘制曲线
  10. 农夫山泉基于SAP SMP移动应用案例分析