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


    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
    
    • 1
    • 2
    • 3

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

    文末

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

  • 相关阅读:
    【Matplotlib绘制图像大全】(二十六):Matplotlib读取本地图像
    常用的代码片段
    bootstrap-table+Django: 服务端分页(包括搜索查询功能)
    openGL通过点绘制图形
    Evolution and Key Milestones of the Linux Operating System
    ubuntu镜像里装东西
    【python初学者日记】用PIL批量给HEIC格式的照片,添加拍摄日期、拍摄地点的水印戳
    归并排序及其时间复杂度分析
    QML中动态增加表格数据
    W5300-TOE Arduino 网络服务器
  • 原文地址:https://blog.csdn.net/Androidxiaofei/article/details/126275484