Part1 :FFmpeg简介

FFmpeg定义

FFmpeg是一款音视频编解码工具,为开发者提供了大量音视频处理接口。

FF指的是“Fast Forward”

FFmpeg历史

2000年,法国天才Fabrice Bellard开发出第一代版本

2004年,Michael Nidermayer接手

2011年,FFmpeg其中的提交者对项目管理不满意,自立门户,创建了Libav

2015年,Michael Nidermayer移植了大量的代码到FFmpeg中,并辞职,希望两个项目可以共同发展,若能合并则更好

GitHub地址:https://github.com/FFmpeg/FFmpeg

FFmpeg组成

  • AVFormat:实现了大多数媒体的封装格式,包括MP4,FLV等文件封装格式,RTMP,RTSP等网络协议封装格式。
  • AVCodec:实现了大多数媒体的编解码格式,支持MPEG4,AAC,H.264(AVC),H.265(HEVC),MP3
  • AVFilter:一个通用的音视频,字幕等滤镜处理框架
  • swscale视频图像转换计算模块:1080p转换为720或者480,或者将图像数据从YUV420p转换成YUYV.
  • swresample音频计算转换模块:操作音频采样,音频通道布局转换,布局调整。

FFmpeg编解码工具ffmpeg

ffmpeg是FFmpeg源代码编译后生成的可执行程序,可以作为命令行使用。

ffmpeg主要工作流程:

  • 读取数据源
  • 进行音视频的解封装
  • 解码每一帧音视频数据
  • 编码每一帧音视频数据
  • 对音视频数据重新封装
  • 输出到目标

FFmpeg多媒体分析器ffprobe

包含音频,视频参数,媒体容器的参数信息。

FFmpeg编译

  • windows平台编译

    下载软件包

    https://ffmpeg.zeranoe.com/builds/

    解压后配置环境变量

    C:\Users\noneplus\Desktop\ffmpeg-20191001-c4de49e-win64-static\bin

    打开命令行

    ffmpeg

Part2:常用命令

ffmpeg命令

命令格式

ffmpeg \
[global_options] \
[input_file_options] -i input_url \
[actions] \
[output_file_options] output_url

参数说明

-y   表示直接覆盖已经存在的输出文件
-n 表示若某个输出文件已经存在则退出

视频截取

ffmpeg -ss 00:00:20 -t 00:00:10 -i test.mp4 noneplus.mp4

-ss表示开始切割的时间,-t表示要切多少。上面就从20秒开始,切10秒钟出来。

视频格式转换

ffmpeg -i noneplus.mp4 noneplus.avi

提取音频流

ffmpeg -i output.mp4 -acodec copy -vn output.aac

-acodec表示音频编码,copy表示不改变编解码器,只是改封装器

-vn 不将视频流写到输出文件中

提取视频流

ffmpeg -i noneplus.mp4 -vcodec copy -an noneplus.mp4

-an 不将音频流写到输出文件中

添加音频

ffmpeg -i bgm.mp3 -i test.mp4 output.mp4

参数

参数名 作用
-i filename 输入文件
ffmpeg -i test1.mp4 test2.avi

转换格式mp4为avi。

参考书籍:

《FFmpeg从入门到精通》刘岐,赵文杰编著

探索FFmpeg的更多相关文章

  1. NET 2.0(C#)调用ffmpeg处理视频的方法

    另外:ffmpeg的net封装库 http://www.intuitive.sk/fflib/ NET 2.0 调用FFMPEG,并异步读取输出信息的代码...public void ConvertV ...

  2. 基于FFMpeg的C#录屏全攻略

    最近负责一个录屏的小项目,需要录制Windows窗口内容并压缩保存到指定文件夹,本想使用已有的录屏软件,但是本着学习的态度去探索了FFMpeg,本文主要介绍基于FFMpeg开源项目的C#录屏软件开发. ...

  3. FFMPEG结构体分析:AVStream

    注:写了一系列的结构体的分析的文章,在这里列一个列表: FFMPEG结构体分析:AVFrame FFMPEG结构体分析:AVFormatContext FFMPEG结构体分析:AVCodecConte ...

  4. FFmpeg 结构体学习(一): AVFormatContext 分析

    在 FFmpeg 学习(六):FFmpeg 核心模块 libavformat 与 libavcodec 分析 中,我们分析了FFmpeg中最重要的两个模块以及重要的结构体之间的关系. 后面的文章,我们 ...

  5. C#实现基于ffmpeg加虹软的人脸识别demo及开发分享

    对开发库的C#封装,屏蔽使用细节,可以快速安全的调用人脸识别相关API.具体见github地址.新增对.NET Core的支持,在Linux(Ubuntu下)测试通过.具体的使用例子和Demo详解,参 ...

  6. C#实现基于ffmpeg加虹软的人脸识别

    关于人脸识别 目前的人脸识别已经相对成熟,有各种收费免费的商业方案和开源方案,其中OpenCV很早就支持了人脸识别,在我选择人脸 识别开发库时,也横向对比了三种库,包括在线识别的百度.开源的OpenC ...

  7. 史林枫:C#.NET利用ffmpeg操作视频实战(格式转换,加水印 一步到位)

    ffmpeg.exe是大名鼎鼎的视频处理软件,以命令行参数形式运行.网上也有很多关于ffmpeg的资料介绍.但是在用C#做实际开发时,却遇到了几个问题及注意事项,比如如何无损处理视频?如何在转换格式的 ...

  8. Fabrice Bellard其人 ---- FFMPEG及其他……

    有些计算机科学家的名字耳熟能详:阿兰·图灵(Alan Turing).高纳德(Donald Knuth).艾兹赫尔·戴克斯特拉(Edsger Dijkstra),这些人的名气甚至大于他们突破性的成就. ...

  9. Flutter交互实战-即刻App探索页下拉&拖拽效果

    前言 Flutter最近比较热门,但是Flutter成体系的文章并不多,前期避免不了踩坑:我这篇文章主要介绍如何使用Flutter实现一个比较复杂的手势交互,顺便分享一下我在使用Flutter过程中遇 ...

随机推荐

  1. SQLAlchemy多表操作

    目录 SQLAlchemy多表操作 一对多 数据准备 具体操作 多对多 数据准备 操作 其它 SQLAlchemy多表操作 一对多 数据准备 models.py from sqlalchemy.ext ...

  2. HTML input属性详谈

    value属性 value属性指定输入字段的初始值: <form> 名字:<br> <input type="text" name="you ...

  3. PHP 数组函数大全

    PHP数组函数是核心的一部分.无需安装即可使用这些函数 函数名称 描述 array_change_key_case 将数组中的所有键名修改为全大写或小写 array_chunk 将一个数组分割成多个 ...

  4. crontab运行python不生效,但是手动执行正常的问题和解决方案

    crontab运行python不生效,但是手动执行正常的问题和解决方案 linux默认装的是python2.7,安装了其他版本后直接执行没问题,但在crontab里执行不了,需要使用全路径. 使用 w ...

  5. es7之修饰器

    什么是修饰器 修饰器其实就是一个普通的函数,用来修饰类以及类的方法. 比如: @test class DecoratorTest { } function test(target) { target. ...

  6. pid相关命令

    pidof 查找正在运行进程的进程号(pid)的工具 pidof - find the process ID of a running program 参数: -s 表示只返回1个 pid -x 表示 ...

  7. ios问题笔记

    32位 最多内存0到3G 64位 最多内存0到8G iOS模板code4app.com github.com developer.apple.con 动画 label不能变小 只能变大,(而uivie ...

  8. ant+jmeter+jenkins自动环境搭建

    一.安装前准备 1.JDK:jdk-8u131-windows-x64 2.jmeter工具:apache-jmeter-5.1.1 3.ANT工具:apache-ant-1.10.3 4.jenki ...

  9. grep命令用法

    linux中grep命令的用法 作为linux中最为常用的三大文本(awk,sed,grep)处理工具之一,掌握好其用法是很有必要的. 首先谈一下grep命令的常用格式为:grep  [选项]  ”模 ...

  10. MySQL 5.5/5.6/5.7及以上版本安装包安装时如何选择安装路径

    安装环境需求: 自从昨天安装了mysql 5.7,发现了一个问题,mysql5.6起,已经不支持2003系统了,如果安装了无法开启服务而且会出现在 本地计算机 无法启动 MySQL57 服务.错误 1 ...