FFmpeg基本组成

  • AVFormat

    封装了大多数媒体格式:如MP4、FLV等文件格式,RTMP、RTSP、MMS、HLS等网络协议。

  • AVCodec

    支持常见编解码格式:MPEG4、AAC等。支持第三方:

    • H.263(AVC)->需x264编码器;
    • H265(HEVC)->需x265编码器;
    • MP3(mp3lame)->需libmp3lame编码器;
  • AVFilter

    通用滤镜处理框架。可以有多个输入和多个输出。

ffmpeg -i 1.jpg -vf "split [main][tmp]; [tmp] crop=iw:ih/2:0:0, vflip [flip];[main][flip] overlay=0:H/2" 2.jpg

说明:

  1. 相同的Filter线性链之间用逗号分隔
  2. 不同的Filter线性链之间用分号分隔
  3. 方括号[]括起来的部分是标签
  4. 上面的命令行,图片换成视频也可以正常转换,比如 1.jpg 改为 1.mp4, 2.jpg 改为 2.mp4
  • AVDevice

  • AVUtil

  • swresample

    音频转换计算模块

  • swscale

    视频图像转换计算模块

编解码工具 ffmpeg.exe

ffmpeg -i 1.mp4 2.avi
  • -i 参数将1.mp4作为输入源
  • mp4和avi是两种文件封装格式,但不是后缀名就可以决定的。
ffmpeg -i 1.mp4 -f avi 2.dat
  • -f进行约束,指定了输出文件的容器格式,其过程和上一个命令一样,仅仅输出的文件名不同。

ffmpeg.exe的工作流程

  1. ffmpeg读取输入源文件
  2. 将音视频包Demuxer(解封装),调用libavformat中的接口即可
  3. Decoder(解码)每一帧音视频数据,成为YVU或者PCM这样的数据,通过libavcodec中的接口即可
  4. 转换参数
  5. Encoder(编码)对应数据,依然通过libavcodec中的接口来实现
  6. 然后通过libavformat中的接口进行Muxer(封装)
  7. 输出到目标,文件或数据流

可以通过下面的命令查看默认支持格式

ffmpeg -formats

查看支持的编解码情况

ffmpeg -codecs
ffmpeg -encoders
ffmpeg -decoders Decoders:
V..... = Video
A..... = Audio
S..... = Subtitle
.F.... = Frame-level multithreading
..S... = Slice-level multithreading
...X.. = Codec is experimental
....B. = Supports draw_horiz_band
.....D = Supports direct rendering method 1

输出信息的第一列包含6个字段:

  1. 表示这个编码器是视频、音频还是字幕;
  2. 表示帧级别的多线程支持;
  3. 表示分片级别的多线程支持;
  4. 表示为试验版本;
  5. draw_horiz_band模式支持;这是一个数据结构;
  6. 直接渲染模式支持;

查看支持哪些滤镜

ffmpeg -filters

查看flv解封装器的参数支持

ffmpeg -h demuxer=flv

查看H.264的编码器的参数支持

ffmpeg -h encoder=h264

查看过滤器的参数支持

ffmpeg -h filter=colorkey

播放器 ffplay.exe

这个一般我们用来做测试工具

多媒体分析器 ffprobe

ffprobe -show_streams 1.mp4

附加一个小例子

ffmpeg -i 2.avi -vcodec mpeg4 -b:v 200k -r 15 -an 15.mp4

说明:

  • 参数b为音频和视频的码率,可以认为是两者加起来的码率。默认200kbit/s

    可以工具b:v设置视频码率,b:a设置音频码率
  • 参数r为视频帧率fps
  • 参数an,转码后的文件不包括音频

改变分辨率

ffmpeg -i 1.mp4 -vf scale=320:240 2.mp4

[视频] FFMpeg 基本组成和入门示例的更多相关文章

  1. 音视频开发之H.264 入门知识

    大家如果有做过音视频相关的项目,那么肯定对 H.264 相关的概念了解的比较通透,这里我为什么还要写这样一篇文章呢?一来是为了对知识的总结,二来是为了给刚入门音视频的同学一个参考. 基础概念 H.26 ...

  2. [WCF编程]1.WCF入门示例

    一.WCF是什么? Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,整合了原有的windows通讯的 .net Remotin ...

  3. Maven入门示例(3):自动部署至外部Tomcat

    Maven入门示例(3):自动部署至外部Tomcat 博客分类:  maven 2012原创   Maven入门示例(3):自动部署至外部Tomcat 上一篇,介绍了如何创建Maven项目以及如何在内 ...

  4. 1.【转】spring MVC入门示例(hello world demo)

    1. Spring MVC介绍 Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于 ...

  5. 【java开发系列】—— spring简单入门示例

    1 JDK安装 2 Struts2简单入门示例 前言 作为入门级的记录帖,没有过多的技术含量,简单的搭建配置框架而已.这次讲到spring,这个应该是SSH中的重量级框架,它主要包含两个内容:控制反转 ...

  6. Spring MVC 入门示例讲解

    在本例中,我们将使用Spring MVC框架构建一个入门级web应用程序.Spring MVC 是Spring框架最重要的的模块之一.它以强大的Spring IoC容器为基础,并充分利用容器的特性来简 ...

  7. Couchbase之个人描述及入门示例

    本文不打算抄袭官方或者引用他人对Couchbase的各种描述,仅仅是自己对它的一点理解(错误之处,敬请指出),并附上一个入门示例. ASP.NET Web项目(其他web开发平台也一样)应用规模小的时 ...

  8. Velocity魔法堂系列一:入门示例

    一.前言 Velocity作为历史悠久的模板引擎不单单可以替代JSP作为Java Web的服务端网页模板引擎,而且可以作为普通文本的模板引擎来增强服务端程序文本处理能力.而且Velocity被移植到不 ...

  9. OUYA游戏开发核心技术剖析OUYA游戏入门示例——StarterKit

    第1章  OUYA游戏入门示例——StarterKit StarterKit是一个多场景的游戏示例,也是OUYA官方推荐给入门开发者分析的第一个完整游戏示例.本章会对StarterKit做详细介绍,包 ...

随机推荐

  1. 【Python】用字母生成图像

    用字母生成图像会用到matplotlib.pyplot库 所以需要安装这个库 pip install matplotlib 等待安装完成即可 ps:由于网络原因,会出现多次的timeout,可以使用国 ...

  2. 攻防世界—pwn—guess_num

    题目分析 checksec检查文件保护机制 这个结果看的我满是问号??? \n ida分析程序 是一个猜数字的游戏,需要全部输入正确才能得到flag 根据大佬的wp得出一下内容 先使用srand()进 ...

  3. Trollcave-suid提权

    一 扫描端口 扫描开放端口:nmap -sV -sC -p- 192.168.0.149 -oA trollcave-allports 扫描敏感目录:gobuster dir -u http://19 ...

  4. 【葵花宝典】一天掌握Docker

    第1章Docker 概述 1-1 Docker是什么 没有虚拟化技术的原始年代 我们仔细想想,在没有计算虚拟化技术的"远古"年代,如果我们要部署一个应用程序(Application ...

  5. SVM 支持向量机算法-原理篇

    公号:码农充电站pro 主页:https://codeshellme.github.io 本篇来介绍SVM 算法,它的英文全称是 Support Vector Machine,中文翻译为支持向量机. ...

  6. pytest学习笔记(pytest框架结构)

    一.pytest框架中使用setup.teardown.更灵活按照用例级别可以分为以下几类: 1.模块级:(setup_module.teardown_module)在模块始末调用 2.函数级:(se ...

  7. C#+Layui开发后台管理系统

    ​我是笑林新记,分享一下我一套C#开发的后台管理系统,希望对大家有帮助!欢迎关注微信公众号:笑林新记   后台开发语言:C# 前端框架:layui   前天用毛笔笔画制作了一个毛笔字效果的Logo,主 ...

  8. 前端面试之CSS权重问题!

    前端面试之CSS权重问题! 下面的权重按照从小到大来排列! 1.通用选择器(*) 2.元素(类型)选择器 权重1 3.类选择器 权重10 4.属性选择器 5.伪类 6.ID 选择器 权重100 7.内 ...

  9. JavaScript的数据类型和数据类型的检测

    数据类型 JavaScript的基础数据类型有,NaN    string   undefined    Null      Boolen    Symbol   Bigint   这些都是基础数据类 ...

  10. Unix Socket 代理服务 unix域套接字

    基于Unix Socket的可靠Node.js HTTP代理实现(支持WebSocket协议) - royalrover - 博客园 https://www.cnblogs.com/accordion ...