音视频开发,为什么要学习FFmpeg?应该怎么入手FFmpeg学习?

发布于:2023-01-22 ⋅ 阅读:(9) ⋅ 点赞:(0) ⋅ 评论:(0)

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 六大常用功能模块

  • libavformat:多媒体文件或协议的封装和解封装库,如 mp4、flv 等文件封装格式,rtmp、rtsp 等网络协议封装格式;
  • libavcodec:音视频解码核心库;
  • libavfilter:音视频、字幕滤镜库;
  • libswscale:图像格式转换库;
  • libswresample:音频重采样库;
  • libavutil:工具库

FFmpeg功能

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、视频格式转换功能

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

5、视频截图功能

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

  • 给视频加水印功能
  • 使用ffmpeg 视频添加水印(logo)

FFmpeg学习有哪些呢?我总结如下:

  • 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文档+学习视频)。按照学习思路进行的思路排序;内容:《音视频开发》,需要的可点击上方粗体获取文档方式。
在这里插入图片描述

文末

音视频开发是个非常复杂的,庞大的开发话题。所以学习音视频需要一个慢慢累积的过程,从现在开始学起来吧!