一.FFmpeg基础知识

1.FFmpeg简介

FFmpeg的名称来自MPEG视频编码标准,前面的“FF”代表“Fast Forward”,FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为视频流的开源计算机程序。可以轻易地实现多种视频格式之间的相互转换。它提供了录制、转换以及流化音视频的完整解决方案。

2.安装FFmpeg

  1. ffmpeg官网下载。
  2. 配置好环境变量,比如将c:\ffmpeg\bin路径配置到环境变量中去,这样bin下面的ffmpeg.exe就可以在命令行中使用了,可以用ffmpeg -version命令测试一下,查看是否配置安装成功。

3.FFmpeg组成

构成FFmpeg主要有两个部分。

(1.)工具软件

这一部分是编译好的程序,包括:ffmpeg.exe,ffplay.exe,ffserver.exe和ffprobe.exe

  • ffmpeg.exe:音视频转码、转换器。
  • ffplay.exe:简单的音视频播放器。
  • ffserver.exe:流媒体服务器。
  • ffprobe.exe:简单的多媒体码流分析器。
(2.)库文件部分

这一部分是可以供开发者使用的SDK,为各个不同平台编译完成的库。上面的四个工具软件都是完整成品形式,那么这些库就其组成部分,可以根据自己的需求使用这些库开发自己的应用程序。这些库有:

  • libavcodec:包含音视频编码器和解码器。
  • libavutil:包含多媒体应用常用的简化编程的工具,如随机数生成器、数据结构、数学函数等功能。
  • libavformat:包含多种多媒体容器格式的封装、解封装工具。
  • libavfilter:包含多媒体处理常用的滤镜功能。
  • libavdevice:用于音视频数据采集和渲染等功能的设备相关。
  • libswscale:用于图像缩放和色彩空间和像素格式转换功能。
  • libswresample:用于音频重采样和格式转换等功能。

4.FFplay简单使用

FFplay是结合FFmpeg和SDL实现的一个简易的跨平台播放器。使用起来很简单:

ffplay [选项] ['输入文件']

而且控制台会打印出视频的各种信息,对于我们查看视频转换结果非常有帮助。

5.使用FFplay的产品

  • 使用FFMPEG作为内核视频播放器:QQ影音,Mplayer,ffplay,暴风影音,KMPlayer等等。
  • 使用FFMPEG作为内核的Directshow Filter:ffdshow,lav filters等等。
  • 使用FFMPEG作为内核的转码工具:ffmpeg,格式工厂等等。

二.FFmpeg处理音视频

如何使用ffmpeg命令行工具进行各式各样的音视频处理操作——缩放、裁剪、剪辑、旋转、格式转换。使用 ffmpeg 命令 的基本形式是:

ffmpeg -i [输入文件名] [参数选项] -f [格式] [输出文件]
(1.)分割剪辑视频

有时候我们需要截取一个长视频的其中某一段内容,比如从一个视频的第10秒开始,截取6秒的内容,也就是10~16秒的内容,输入一个out.mp4文件

$ ffmpeg -i in.mp4 -ss 00:00:10 -t 00:00:06 -acodec aac -vcodec h264 -strict -2 out.mp4   //从00:00:10开始,截取的长度为00:00:06

代码参数解释:

  • -i 代表输入待处理的文件
  • -ss 代表开始的时间
  • -t 代表截取的长度。
  • -acodec 音频编解码器
  • -vcodec 音频编解码器
(2.)拼接媒体文件

先创建一个文本文件filelist.txt:

file 'input1.mkv'
file 'input2.mkv'
file 'input3.mkv'

然后:

$ ffmpeg -f concat -i filelist.txt -c copy output.mkv
(3.)缩放视频

很多时候我们需要把一个高分辨率的视频处理成一个低分辨率的视频,以达到减小视频体积的目的。举个例子:把一个1080x1920的视频缩小到360x640

$ ffmpeg -i in.mp4 -vf scale=360:640 -acodec aac -vcodec h264 out.mp4  // 1080*1920-->360*640

代码参数解释:

  • -i 代表输入,
  • -vf 的全称是video filter,即:视频滤镜,缩放其实就是给视频添加一个滤镜。
  • scale=360:640 scale是一种滤镜,缩放滤镜,格式是:scale=width:height,其中,width和height分别是处理后的宽和高
(4.)旋转视频

使用ffmpeg可以轻松地旋转视频。举个例子:将一个视频顺时针旋转90度

$ ffmpeg -i in.mp4 -vf rotate=PI/2:ow=1080:oh=1920 out.mp4

代码参数解释:
视频旋转其实也是一直滤镜。

  • rotate=PI/2 rotate是旋转滤镜,后面的“PI/2”旋转角度(正数代表顺时针),这里是90度
  • rotate除了指定旋转角度的参数外,还有其他一些参数:
  • ow 全称是out width,输出视频的宽度,如果不指定,默认是输入视频的宽度
  • oh 全称是out height,输出视频的高度,如果不指定,默认是输入视频的高度
(5.)调节帧率

帧率会很大程度上影响画面的流畅度和视频的体积,帧率越大,画面越流畅,同时视频体积越大。
我们有时候需要通过降低帧率来减小视频的体积。
举个例子:将一个视频的帧率降到15

$ ffmpeg -i in.mp4 -r 15 out.mp4

代码参数解释:

  • -r 帧率
(6.)格式转换

ffmpeg具备强大的格式转换功能,这里举几个常用的例子。

$ ffmpeg -i in.mov -vcodec copy -acodec copy out.mp4  // mov --> mp4
$ ffmpeg -i in.flv -vcodec copy -acodec copy out.mp4  // flv --> mp4
$ ffmpeg -i in.gif -vf scale=420:-2,format=yuv420p out.mp4  // gif --> mp4
(7.)让视频静音
$ ffmpeg -i video_input.mp4 -an -video_output.mp4

-an 标记会让所有的音频参数无效,因为最后没有音频会产生。

(8.)为音频增加封面图片
$ ffmpeg -loop 1 -i image.jpg -i audio.wav -c:v libx264 -c:a aac -strict experimental -b:a 192k -shortest output.mp4
(9.)从视频中抽取音频
$ ffmpeg -i video.mp4 -vn audio.mp3
(10.)视频添加图片水印
$  ffmpeg -i input.mp4 -i iQIYI_logo.png -filter_complex overlay output.mp4

使用FFmpeg命令对音视频进行基础的编辑相关推荐

  1. 使用FFmpeg命令处理音视频

    文章目录 前言 一.ffprobe相关命令 1.使用ffprobe查看音频文件的信息 2.使用ffprobe查看视频文件的信息 二.ffplay相关命令 1.基本的ffplay命令 2.音视频同步命令 ...

  2. android音视频工程师,音视频学习 (十三) Android 中通过 FFmpeg 命令对音视频编辑处理(已开源)...

    ## 音视频学习 (十三) Android 中通过 FFmpeg 命令对音视频编辑处理(已开源) ## 视音频编辑器 ## 前言 有时候我们想对音视频进行加工处理,比如视频编辑.添加字幕.裁剪等功能处 ...

  3. Android 中通过 FFmpeg 命令对音视频编辑处理(已开源)

    视音频编辑器 前言 有时候我们想对音视频进行加工处理,比如视频编辑.添加字幕.裁剪等功能处理,虽然 Github 上开源了一些比较不错的项目,但是如果我们想在此项目上进行二次开发,比如我想拿到该项目的 ...

  4. android视频剪辑处理第三方,Android 中通过 FFmpeg 命令对音视频编辑处理

    以下文章来源于DevYk ,作者DevYK 音视频编辑器 前言 有时候我们想对音视频进行加工处理,比如视频编辑.添加字幕.裁剪等功能处理,虽然 Github 上开源了一些比较不错的项目,但是如果我们想 ...

  5. 音视频编解码流程与如何使用 FFMPEG 命令进行音视频处理

    一.前言 FFMPEG 是特别强大的专门用于处理音视频的开源库.你既可以使用它的 API 对音视频进行处理,也可以使用它提供的工具,如 ffmpeg, ffplay, ffprobe,来编辑你的音视频 ...

  6. 使用FFmpeg命令实现音视频转码的备忘录

    FFmpeg是比较经典,也是比较流行的多媒体工具库(demux,mux, decode,encode等等),支持格式也比较丰富,也比较实用. 做多媒体开发的经常都需要使用到各种格式的音视频对自己的开发 ...

  7. ffmpeg 命令_Qt音视频开发11-ffmpeg常用命令

    一.前言 大部分的格式转换工具比如格式化工厂等,都用到了ffmpeg来处理,ffmpeg编译后生成的ffmpeg.exe.ffplay.exe.ffprobe.exe等可执行文件,其实就封装了众多牛逼 ...

  8. Win10 使用python和ffmpeg批量合并音视频

    将m4a文件和mp4文件合并为MP4 具体代码如下 import os,sys import io import subprocess #在vscode运行时输出内容含中文不乱码,其他软件运行未知 s ...

  9. FFmpeg学习(音视频理论知识)

    文章目录 1. 音视频理论知识 1.1 基本概念 1.1.1 音视频必备的基本概念 常用的视频封装格式 常用的视频编码器 常用的音频编程器: 视频流 裸数据YUV 1.1.2 音视频常见处理 采集 处 ...

  10. 【音视频零基础入门 1】视频播放器原理、流媒体协议、封装格式、视频编码、音频编码

    [音视频零基础入门 1]视频播放器原理.流媒体协议.封装格式.视频编码 一.视频播放器原理 1.1 解协议 1.2 解封装 1.3 解码 1.4 视音频同步 二.流媒体协议 三.封装格式 四.封装格式 ...

最新文章

  1. Android自定义控件NumberCircleProgressBar(圆形进度条)的实现
  2. 用c++实现LR语法分析器 通过LR分析表及三个栈形成对输入表达式的判断!
  3. csv java web 导入_DAY5-step9 使用CSV模块和Pandas在Python中读取和写入CSV文件
  4. c语言putchar_C语言实现变色的心!连机器都会变心,呵,男人!
  5. pbs 写matlab作业,pbs提交作业
  6. android nfc ndef mifareclassic,Android NFC开发-实践篇
  7. 一次不愉快的面试经历
  8. /bin/sh: cc: 未找到命令
  9. java实现签名和解签
  10. 如何录制电脑内部声音
  11. secureCRT注册码
  12. IIS 配置网站出现500内部服务器错误,显示具体错误信息
  13. win10系统picpick截图工具自动滚动截长图方法
  14. 读书笔记《敏捷项目管理》第七章 定义产品愿景和产品路线图
  15. 一个iOS程序员的BAT面试经验
  16. android note4 android版本,三星Galaxy Note4手机系统是什么?能升级安卓4.3吗?
  17. 流利说英语level4_英语流利说-懂你英语Level4Unit1Part1
  18. 用Visio绘制深度模型结构图的基本单元_斜立方体
  19. 陪伴难道是最长情的告白吗
  20. C语言——函数递归实现

热门文章

  1. iOS 屏幕旋转的实践解析
  2. Disk for DB is too low. Cassandra state detected DOWN. Disk space for DB not retrievable
  3. RESCRIPt:序列分类参考数据库管理工具
  4. 删除Word模板文件
  5. 数学建模竞赛经验分享(从本科生到研究生,获奖成功率100%,我从数模所学)
  6. 脉冲触发器和边沿触发器的区别
  7. 信息系统项目管理十大管理过程整理
  8. 开源云真机平台-Sonic应用实践
  9. dcpb连接mysql_MySQL Cluster 7.3.7+CentOS7集群配置入门 MySQL双管理节点配置入门
  10. Barrett reduction算法