探索FFmpeg
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的更多相关文章
- NET 2.0(C#)调用ffmpeg处理视频的方法
另外:ffmpeg的net封装库 http://www.intuitive.sk/fflib/ NET 2.0 调用FFMPEG,并异步读取输出信息的代码...public void ConvertV ...
- 基于FFMpeg的C#录屏全攻略
最近负责一个录屏的小项目,需要录制Windows窗口内容并压缩保存到指定文件夹,本想使用已有的录屏软件,但是本着学习的态度去探索了FFMpeg,本文主要介绍基于FFMpeg开源项目的C#录屏软件开发. ...
- FFMPEG结构体分析:AVStream
注:写了一系列的结构体的分析的文章,在这里列一个列表: FFMPEG结构体分析:AVFrame FFMPEG结构体分析:AVFormatContext FFMPEG结构体分析:AVCodecConte ...
- FFmpeg 结构体学习(一): AVFormatContext 分析
在 FFmpeg 学习(六):FFmpeg 核心模块 libavformat 与 libavcodec 分析 中,我们分析了FFmpeg中最重要的两个模块以及重要的结构体之间的关系. 后面的文章,我们 ...
- C#实现基于ffmpeg加虹软的人脸识别demo及开发分享
对开发库的C#封装,屏蔽使用细节,可以快速安全的调用人脸识别相关API.具体见github地址.新增对.NET Core的支持,在Linux(Ubuntu下)测试通过.具体的使用例子和Demo详解,参 ...
- C#实现基于ffmpeg加虹软的人脸识别
关于人脸识别 目前的人脸识别已经相对成熟,有各种收费免费的商业方案和开源方案,其中OpenCV很早就支持了人脸识别,在我选择人脸 识别开发库时,也横向对比了三种库,包括在线识别的百度.开源的OpenC ...
- 史林枫:C#.NET利用ffmpeg操作视频实战(格式转换,加水印 一步到位)
ffmpeg.exe是大名鼎鼎的视频处理软件,以命令行参数形式运行.网上也有很多关于ffmpeg的资料介绍.但是在用C#做实际开发时,却遇到了几个问题及注意事项,比如如何无损处理视频?如何在转换格式的 ...
- Fabrice Bellard其人 ---- FFMPEG及其他……
有些计算机科学家的名字耳熟能详:阿兰·图灵(Alan Turing).高纳德(Donald Knuth).艾兹赫尔·戴克斯特拉(Edsger Dijkstra),这些人的名气甚至大于他们突破性的成就. ...
- Flutter交互实战-即刻App探索页下拉&拖拽效果
前言 Flutter最近比较热门,但是Flutter成体系的文章并不多,前期避免不了踩坑:我这篇文章主要介绍如何使用Flutter实现一个比较复杂的手势交互,顺便分享一下我在使用Flutter过程中遇 ...
随机推荐
- C# - VS2019 WinFrm应用程序连接Access数据库,并简单实现数据库表的数据查询、显示
序言 众所周知,Oracle数据库和MySQL数据库一般在大型项目中使用,在某些小型项目中Access数据库使用较为方便,今天记录一下VS2019 WinFrm应用程序连接Access数据库,并实现数 ...
- Anchor 和 Dock 属性的使用
Anchor 是一个常用属性,用来控制当窗体大小变化,控件如何自动调整自身大小和位置 一 仅设置一个值 如果此时将窗体放大,将会变成这样: 由于固定了top, 所以top不变,那么bottom自然会因 ...
- Locust 接口性能测试 - 转载一 (后期熟悉实践自己出一套完整的)
转载大佬 ,.. 另外一篇:https://www.cnblogs.com/imyalost/p/9758189.html记录一下接口性能测试的学习 先熟悉一下概念: Locust是使用Pytho ...
- 开发技术--浅谈python数据类型
开发|浅谈python数据类型 在回顾Python基础的时候,遇到最大的问题就是内容很多,而我的目的是回顾自己之前学习的内容,进行相应的总结,所以我就不玩基础了,很多在我实际生活中使用的东西,我会在文 ...
- du查看某个文件或目录占用磁盘空间的大小
一.du的功能:`du` reports the amount of disk space used by the specified files and for each subdirectory ...
- 201871010121-王方-《面向对象(java)程序设计对象》第十周学习总结
王方第九周Java实验总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.co ...
- Eclipse IDE for java EE Developers下载和安装
1.登录 http://www.eclipse.org/home/index.php ,下载Eclipse IDE for java EE Developers 2.解压缩压缩包到任意路径(推荐:G: ...
- Linux for Matlab中文注释乱码(亲测有效)
中文注释乱码的原因是windows下的m文件采用的是gb2312编码,只要将所有的m文件转成 utf8文件,显示就正常了. 1.首先安装enca:sudo apt-get install enca 2 ...
- LG4819/BZOJ2438 「中山市选2011」杀人游戏 Tarjan缩点+概率
问题描述 LG4819 BZOJ2438 题解 发现如果有一些人之间认识关系形成环,只需要问一个人就能把控整个环. \(\mathrm{Tarjan}\)缩点. 缩点之后所有入度为\(0\)的点,必须 ...
- luoguP2260 [清华集训2012]模积和
题意 \(\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}n\%i*m\%j*[i!=j]\) \(\sum\limits_{i=1}^{n}\sum\limits ...