ffmpeg是一款多媒体框架,可以帮助您在开发媒体软件的时候建立多种媒体添加方式,该软件提供的模块很多,支持ffmpeg.exe、ffplay.exe、ffprobe.exe三个主要程序,你可以将这些程序配置到对应的开发区域,从而帮助您在设计媒体系统的时候获得更多功能;本次提供的就是最新的FFmpeg for window4.0版本,新版拥有视频标准化过滤器、音频lv2包装过滤器,同时支持E-AC-3相关帧,可以为用户在开发多媒体系统的时候获得更多组件!
软件功能
1、视频采集功能
ffmpeg视频采集功能非常强大,不仅可以采集视频采集卡或USB摄像头的图像,还可以进行屏幕录制,同时还支持以RTP方式将视频流传送给支持RTSP的流媒体服务器,支持直播应用。
2、视频格式转换功能
视频格式转换,比如可以将多种视频格式转换为flv格式,可不是视频信号转换 。
ffmpeg可以轻易地实现多种视频格式之间的相互转换(wma,rm,avi,mod等),例如可以将摄录下的视频avi等转成视频网站所采用的flv格式。
3、视频截图功能
对于选定的视频,截取指定时间的缩略图。视频抓图,获取静态图和动态图,不提倡抓gif文件;因为抓出的gif文件大而播放不流畅。
4、给视频加水印功能
使用ffmpeg 视频添加水印(logo)。
软件特色
使pkg-config找到我的库
在交叉编译时使用pkg-config
将单张照片编码成电影
将电影编码为单张照片
使用多线程MPEG *编码可以看到质量轻微下降
从标准输入读取或写入标准输出
也是可以修改帧频的
用ffmpeg编码Xvid或DivX视频
支持编码高质量MPEG-1 / MPEG-2
可以读取DirectShow文件
支持加入视频文件、支持连接视频文件
使用concat过滤器进行连接、使用连接分路器连接
也支持使用concat协议(文件级别)、使用原始音频和视频进行连接
FFmpeg在我的VOB文件中可以看字幕
支持运行ffmpeg作为后台任务
支持Microsoft Visual C ++
可以添加automake,libtool或autoconf
在我的C ++应用程序中使用FFmpeg
在我的C ++应用程序中使用libavutil
简单的多媒体流分析
作为一般规则,选项将应用于下一个指定的文件。 因此,顺序很重要,您可以多次在命令行上使用相同的选项。 然后将每个事件应用于下一个输入或输出文件。 该规则的例外是全局选项(例如详细级别),应该首先指定它们。
不要混合输入和输出文件 - 首先指定所有输入文件,然后指定所有输出文件。 也不要混合属于不同文件的选项。 所有选项仅适用于下一个输入或输出文件,并在文件之间重置。
ffmpeg中每个输出的代码转换过程可以用下图来描述:
简单的过滤器图就是那些只有一个输入和输出,都是相同类型的过滤器图。 在上图中,它们可以通过简单地在解码和编码之间插入额外的步骤来表示
简单的filtergraphs配置为每个流'-filter'选项(分别为视频和音频'-vf'和'-af'别名)。 一个简单的视频滤镜可以看起来像这样:
复杂的过滤器图是那些不能简单描述为应用于一个流的线性处理链的过滤器图。 例如,当图形有多个输入和/或输出,或者输出流类型与输入不同时,就是这种情况。 它们可以用下图表示:
libavfilter库提供了一个通用的音频/视频过滤框架,其中包含几个过滤器,源和接收器。
MSYS2通过'mingw64_shell.bat'或'mingw32_shell.bat'提供一个完整的MinGW-w64环境,而不是'msys2_shell.bat'提供的环境。
通过调用make -r而不是make make来禁用Makefile中的隐式规则,可以加快使用MSYS2进行构建。 这种加速对于正常的一次性构建而言几乎不存在,并且仅在第二次运行make时才会显着(例如在make install期间)。
为了编译FFplay,您必须安装SDL的MinGW开发库和pkg-config。
通过在配置FFmpeg时使用./configure --enable-shared,您可以构建FFmpeg库(例如libavutil,libavcodec,libavformat)作为DLL。
模块介绍
libavutil是一个包含用于简化编程的函数的库,包括随机数生成器,数据结构,数学例程,核心多媒体实用程序等等。
libavcodec是一个包含音频/视频编解码器解码器和编码器的库。
libavformat是一个包含多媒体容器格式的demuxers和muxers的库。
libavdevice是一个包含输入和输出设备的库,用于抓取并呈现许多常见的多媒体输入/输出软件框架,包括Video4Linux,Video4Linux2,VfW和ALSA。
libavfilter是一个包含媒体过滤器的库。
libswscale是一个执行高度优化的图像缩放和色彩空间/像素格式转换操作的库。
libswresample是执行高度优化的音频重采样,重新矩阵转换和样本格式转换操作的库。
使用说明
使用Microsoft Visual C ++链接到FFmpeg
如果您打算与MSVC构建的静态库链接,则需要确保在项目设置中将运行时库设置为多线程(/ MT)。
您需要内联定义MSVC可以理解的内容:
#define inline __inline
还要注意,正如Microsoft Visual C ++中所述,您将需要一个兼容MSVC的inttypes.h。
如果您计划使用由dlltool创建的导入库,则必须在链接器优化设置下将引用设置为否(/ OPT:NOREF),否则生成的二进制文件将在运行时失败。使用由lib.exe生成的导入库时,这不是必需的。此问题在http://sourceware.org/bugzilla/show_bug.cgi?id=12633上报。
要创建与/ OPT:REF选项一起工作的导入库(在发布模式下默认启用),请按照下列步骤操作:
打开Visual Studio命令提示符。
或者,在常规命令行提示符中,调用为设置Visual C ++工具的环境变量的'vcvars32.bat'(该文件的标准位置类似于'C: Program Files(x86_ Microsoft Visual Studio 10.0 VC BIN VCVARS32.BAT“)。
进入存储创建的LIB和DLL文件的'bin'目录。
使用lib.exe生成新的导入库:
常见问题
1.1为什么不支持FFmpeg功能[xyz]?
因为还没有人接受这个任务。 FFmpeg的开发是由对个人开发者来说很重要的任务驱动的。 如果有一项对您很重要的功能,实现它的最好方法是自己承担这项任务或赞助开发人员。
1.2 FFmpeg不支持编解码器XXX。 你可以包含一个Windows DLL加载器来支持它吗?
没有Windows DLL不可移植,臃肿且速度慢。 此外FFmpeg努力本地支持所有编解码器。 DLL加载器不利于实现这一目标。
1.3虽然这种格式似乎被ffmpeg支持,但我无法读取该文件。
即使ffmpeg可以读取容器格式,也可能不支持其所有编解码器。 请参阅ffmpeg文档中支持的编解码器列表。
更新日志
FFmpeg 4.0更新:
1、Bitstream过滤器,用于在H.264,HEVC和MPEG-2流中编辑元数据
2、实验MagicYUV编码器
3、TiVo ty / ty + demuxer
4、英特尔QSV加速MJPEG编码
5、原生aptX和aptX HD编码器和解码器
6、NVIDIA NVDEC加速H.264,HEVC,MJPEG,MPEG-1/2/4,VC1,VP8 / 9 hwaccel解码
7、英特尔QSV加速覆盖滤波器
8、mcompand音频过滤器
9、acontrast音频过滤器
10、OpenCL覆盖过滤器
11、视频混合过滤器
12、视频标准化过滤器
13、音频lv2包装过滤器
14、VAAPI MJPEG和VP8解码
15、AMD AMF H.264和HEVC编码器
16、视频fillborders过滤器
17、视频setrange过滤器
18、支持LibreSSL(通过libtls)
19、降低了对Windows XP构建的支持。支持的最低Windows版本是Windows Vista。
20、去卷积视频滤镜
21、熵视频过滤器
22、希尔伯特音频滤波器源
23、aiir音频过滤器
24、删除了ffserver程序
25、删除了ffmenc和ffmdec muxer和demuxer
26、VideoToolbox HEVC编码器和hwaccel
27、VAAPI加速的ProcAmp(色彩平衡),降噪和清晰度滤镜
28、添加android_camera indev
29、codec2 en /通过libcodec2解码
30、本地SBC编码器和解码器
31、drmeter音频过滤器
32、hapqa_extract比特流过滤器
33、filter_units比特流筛选器
34、AV1通过libaom支持
35、支持E-AC-3相关帧
36、用于提取E-AC-3内核的比特流滤波器
37、Haivision SRT协议通过libsrt
38、vfrdet过滤器
∨ 展开