FFmpeg是一个免费的多媒体框架,可以运行音频和视频多种格式的录影、转换、流功能,能让用户访问几乎所有视频格式,包括mkv、flv、mov,VLC Media Player、Google Chrome浏览器都已经支持。
所以音视频开发要学FFmpeg是必须的,功能性很强大。
FFmpeg是一个跨平台的多媒体库,也是目前音视频领域应用最广泛的库。包括libavcodec、libavformat、libavutil、libavdevice、libavfilter、libswscale、libswresample、libpostproc等模块。其中avcodec用于编解码,avformat用于解封装,avutil是提供工具类,avdevice用于各平台的设备接入,avfilter提供滤镜操作,swscale提供图像缩放与像素格式转换,swresample提供音频重采样,postproc提供高级处理。
FFmpeg有非常强大的功能包括视频采集功能、视频格式转换、视频抓图、给视频加水印等,核心功能作用如下。
1、视频采集功能
ffmpeg视频采集功能非常强大,不仅可以采集视频采集卡或USB摄像头的图像,还可
以进行屏幕录制,同时还支持以RTP方式将视频流传送给支持RTSP的流媒体服务器,支持直播应用。
2、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.1]
(https://product.pconline.com.cn/itbk/wlbg/network/1403/4387067.html)05:5060 > /tmp/ffmpeg.sdp
以上命令表示:采集10秒钟视频,对video4linux2视频设备进行采集,采集QCIF(176*144)的视频,每秒8帧,视频设备为/dev/video0,视频编码为h263,输出格式为RTP,后面定义了IP地址及端口(WWW.JB51.NET 脚本之家),将该码流所对应的SDP文件重定向到/tmp/ffmpeg.sdp中,将此SDP文件上传到流媒体服务器就可以实现直播了。
3、ffmpeg在windows下的视频采集
在windows下关于ffmpeg视频采集的资料非常少,但是ffmpeg还是支持windows下视频采集的。ffmpeg支持windows下video for windows(VFW)设备的视频采集,不过VFW设备已经过时,正在被WDM的视频设备所取代,但是ffmpeg还没有支持WDM的计划,不过好像有将WDM转为VFW的工具,因此ffmpeg还是可以在windows下进行视频采集的。
4、视频格式转换功能
5、视频截图功能
对于选定的视频,截取指定时间的缩略图。视频抓图,获取静态图和动态图,不提倡抓gif文件;因为抓出的gif文件大而播放不流畅。
FFmpeg 开发(01):FFmpeg 编译和集成
FFmpeg 开发(02):FFmpeg + ANativeWindow 实现视频解码播放
FFmpeg 开发(03):FFmpeg + OpenSLES 实现音频解码播放
FFmpeg 开发(04):FFmpeg + OpenGLES 实现音频可视化播放
FFmpeg 开发(05):FFmpeg + OpenGLES 实现视频解码播放和视频滤镜
FFmpeg 开发(06):FFmpeg 播放器实现音视频同步的三种方式
FFmpeg 开发(07):FFmpeg + OpenGLES 实现 3D 全景播放器
FFmpeg 开发(08):FFmpeg 播放器视频渲染优化
FFmpeg 开发(09):FFmpeg、x264以及fdk-aac 编译整合
FFmpeg 开发(10):FFmpeg 视频录制 - 视频添加滤镜和编码
FFmpeg 开发(11):FFmpeg + Android AudioRecorder 音频录制编码
FFmpeg 开发(12):Android FFmpeg 实现带滤镜的微信小视频录制功能
FFmpeg 开发(13):Android FFmpeg 流媒体边播放边录制功能
FFmpeg 开发(14):Android FFmpeg + MediaCodec 实现视频硬解码
FFmpeg 开发(15):学习使用 FFmpeg 打造一个自己的通用播放器
FFmpeg的学习知识很多,当然音视频开发更广更深。所以正打算往音视频发展,想进入音视频发展红利时代,Android开发转音视频开发是不错的发展。如今抖音、快手有多火想必大家都知道;可能大家学习音视频,没有什么思路,毕竟内容太多学起来很杂乱。网上的资料解析很杂乱不是从何学起。
我在这里推荐字节大佬在博文上发布的学习大纲,经过我一番总结归纳成一套音视频开发学习的(PDF文档+学习视频)。按照学习思路进行的思路排序;内容:《音视频开发》,需要的可点击上方粗体获取文档方式。
音视频开发是个非常复杂的,庞大的开发话题。所以学习音视频需要一个慢慢累积的过程,从现在开始学起来吧!