FFmpeg格式的作用是什么呢 ffmpeg支持的格式是什么呢

来源:科讯网

FFmpeg是什么?想必很多朋友都不太了解,小编也是从最的“Win10原生支持FFmpeg,将通吃所有主流视频格式”一篇文章中有所了解。究竟FFmpeg是什么?为什么Win10原生支持FFmpeg框架,就可以支持所有主流视频格式呢?下面小编将自己所知道的,详细分享一下。

FFmpeg是什么?

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植和编解码质量,libavcodec里很多codec都是从头开发的。

FFmpeg在Linux台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、Mac OS X等。这个项目最早由Fabrice Bellard发起,现在由Michael Niedermayer维护。许多FFmpeg的开发人员都来自MPlayer项目,而且当前FFmpeg也是放在MPlayer项目组的服务器上。项目的名称来自MPEG视频编码标准,前面的"FF"代表"Fast Forward"。

简单来说,FFmpeg是一个免费的多媒体框架,可以运行音频和视频多种格式的录影、转换、流功能,能让用户访问几乎所有视频格式,包括mkv、flv、mov,VLCMediaPlayer、GoogleChrome浏览器都已经支持。

FFmpeg有什么用?

FFmpeg有非常强大的功能包括视频采集功能、视频格式转换、视频抓图、给视频加水印等,核心功能作用如下。

视频采集功能

ffmpeg视频采集功能非常强大,不仅可以采集视频采集卡或USB摄像头的图像,还可

以进行屏幕录制,同时还支持以RTP方式将视频流传送给支持RTSP的流媒体服务器,支持直播应用。

ffmpeg在Linux下的视频采集

在Linux台上,ffmpeg对V4L2的视频设备提供了很好的支持,如:

./ffmpeg -t 10 -f video4linux2 -s 176*144 -r 8 -i /dev/video0 -vcodec h263 -f rtp rtp://192.168.1.105:5060 > /tmp/ffmpeg.sdp

以上命令表示:采集10秒钟视频,对video4linux2视频设备进行采集,采集QCIF(176*144)的视频,每秒8帧,视频设备为/dev/video0,视频编码为h263,输出格式为RTP,后面定义了IP地址及端口(WWW.JB51.NET 脚本之家),将该码流所对应的SDP文件重定向到/tmp/ffmpeg.sdp中,将此SDP文件上传到流媒体服务器就可以实现直播了。

ffmpeg在windows下的视频采集

在windows下关于ffmpeg视频采集的资料非常少,但是ffmpeg还是支持windows下视频采集的。ffmpeg支持windows下video for windows(VFW)设备的视频采集,不过VFW设备已经过时,正在被WDM的视频设备所取代,但是ffmpeg还没有支持WDM的计划,不过好像有将WDM转为VFW的工具,因此ffmpeg还是可以在windows下进行视频采集的。

视频格式转换功能

ffmpeg视频转换功能。视频格式转换,比如可以将多种视频格式转换为flv格式,可不是视频信号转换 。

ffmpeg可以轻易地实现多种视频格式之间的相互转换(wma,rm,avi,mod等),例如可以将摄录下的视频avi等转成视频网站所采用的flv格式。

视频截图功能

对于选定的视频,截取指定时间的缩略图。视频抓图,获取静态图和动态图,不提倡抓gif文件;因为抓出的gif文件大而播放不流畅。

给视频加水印功能

使用ffmpeg 视频添加水印(logo)。

一、 ffmpeg简介

FFmpeg框架的基本组成包含 AVFormat 、AVCodec、AVFilter、AVDevice、AVUtil等模块库,如下图片:

1 、FFmpeg的封装模块AVFormat

AVFormat中实现了目前多媒体领域中的绝大多数媒体封装格式,包含封装和解封装,如MP4、FLV、KV、TS等文件封装格式,RTMP、RTSP、MMS、HLS等网络协议封装格式。FFmpeg是否支持某种媒体封装格式,取决于编译时是否包含了该格式的封装库。根据实际需求,可进行媒体封装格式的扩展,增加自己定制的封装格式,即在AVFormat中增加自己的封装处理模块。

2、FFmpeg的编解码模块AVcodec

AVCodec中实现可目前多媒体领域绝大多数常用的编解码格式,既支持编码,也支持解码。AVCodec除了支持MPEG4、AAC、MJPEG等自带的媒体编解码格式之外,还支持第三方的编解码器,如H.264(AVC)编码,需要使用x264编码器;H.265(HEVC)编码,需要使用x265编码器;MP3(mp3lame)编码,需要使用libmp3lame编码器。如果希望增加自己的编码格式,或者硬件编解码,则需要在AVCodec中增加相应的编解码模块。

3、FFmpeg的滤镜模块AVFilter

AVFilter库提供了一个通用的音频、视频、字幕等滤镜处理框架。在AVFilter中,滤镜框架可以有多个输入和多个输出。如下例子

main

tmp

flip

输入

split

overlay

crop

输出

vfilp

4、FFmpeg的视频图像转换计算模块swscale

swscale模块提供了高级别的图像转换API,例如它允许进行图像缩放和像素格式转换,常见于图像从1080p转换成720p或者480p等的缩放,或者将图像数据从YUV420p转换成YUYV,或者YUV转RGB等图像格式转换。

5、FFmpeg 的音频转换计算模块seresample

swresample模块提供了高级别的音频重采样API。例如他允许操作音频采样、音频通道布局转换与布局调整。

二、编码、解码、封装、解封装支持

1、FFmpeg的编码器支持

FFmpeg支持的编码器比较全面,比如AAC、AC3、H.264、H.265、MPEG4、MPEG2VIDEO、PCM、FLV1的编码器支持。

2、FFmpeg的解码器支持

FFmpeg支持的解码器模块decoders支持了MPEG4、H.264、H.265(HEVC)、MP3等格式

3、FFmpeg的封装支持

FFmpeg支持生成裸流文件,如H.264、AAC、PCM,也支持一些常见的格式,如MP3、MP4、FLV、M3U8、WEBM等。

4、FFmpeg的解封装支持

FFmpeg源码中已经支持的demuxer非常多,包含图片(image)、MP3、FLV、MP4、MOV、AVI等

5、FFmpeg的通信协议支持

FFmpeg支持的流媒体协议比较多,包含MMS、HTTP、HTTPS、HLS(M3U8)、RTMP、RTP,甚至支持TCP,UDP,其也支持使用file协议的本地文件操作和使用concat协议支持的多个文件串流操作。

标签: 格式工厂 翻录工具 快捷文件

推荐

财富更多》

动态更多》

热点