码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • FFmpeg的API库介绍


    FFmpeg 的 API 库一共有 8 个,如下图:



    1,swscale ,视频数据 处理类库,例如提供了 sws_scale 函数来做 像素格式和分辨率的转换,还有一些处理视频的滤波函数。sw 应该是 SoftWare 的缩写。

    2,swresample ,音频数据 处理类库,例如提供了 swr_convert 函数 来实现 音频数据的重采样。

    3,postproc,视频后处理库,提供了一些视频相关的函数,但是有很多函数没有实现,或者实现了一半,如下:

    所以 libpostproc 应该是一个实验性的库,不用管。


    4,avutil,a 代表 audio,v 代表 vedio,所以 avutil 是一个 与 音频,视频都相关的工具类。

    avutil 这个库的主要函数分为以下几类。

    • 流媒体相关的函数,例如 av_frame_get_pkt_duration,av_frame_get_pkt_pos。
    • 内存管理函数,例如 av_malloc 跟 av_free 。
    • 数学相关的函数,例如 av_mod_i,av_mul_q。
    • FFmpeg 通用数据结构管理函数,例如 av_opt_find。
    • 线程相关函数,例如 av_thread_message_queue_alloc。

    可以看出, avutil 库是一个大杂烩,什么都有。


    5,avformat,封装格式处理库,主要是解析 MP4,MP3,TS,FLV 等等封装格式,同时 FFmpeg 还自己创建了一些假的封装格式,例如 tee 封装格式,这些假的封装格式只是为了方便 实现 ffmpeg 命令行的功能。tee 就是为了实现 命令行多路输出的语法。

    6,avfilter,音视频滤镜库。有非常多的滤镜可以选择,例如裁剪时间,加水印,画中画,音频倍速。

    滤镜库其实其实有点杂,他不只是做一些特效。FFmpeg 把一些功能性的函数也会加进去 avfilter 库,例如 转换音频的采样率,声道 都是用 aformat 滤镜实现的。用 aformat 滤镜实现 重采样 会比 用 swresample 更简单。虽然内部也是调的 swresample 。

    7,avdevice,设备处理类库,主要处理各种设备的输入信息,例如摄像头,麦克风,抓屏。

    8,avcodec,编解码类库,avcodec 实际上是编解码管理器,他定义了一种通用结构来对接其他的编解码器,你可以把很多外部的编解码集成到 avcodec 类库。


    至此 ,8 个库就介绍完了,ffmpeg.exe 实际上也是 调这 8个库的函数实现的。而 ffmpeg.exe 主要由一个 5 千行的 ffmpeg.c 文件实现的。

    所以 怎么调这 8个库的函数,这些 API 库的使用方法其实就在 ffmpeg.c 里面。

    ffmpeg.exe 命令行任何的功能,都能在 5 千行的 ffmpeg.c 找到实现的原理。


    推荐一个零声学院免费公开课程,个人觉得老师讲得不错,分享给大家:[Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习]

  • 相关阅读:
    科研方法-X_LAB-方法总结和实践记录
    一文带你了解区块链中15种共识算法
    这一次,话筒给你:向自由软件之父 Richard M. Stallman 提问啦!
    Ubuntu18.04安装docker-io
    【FPGA教程案例8】基于verilog的分频器设计与实现
    python简单练习案例-石头剪刀布小游戏
    随手记录第十话 -- 升级SpringBoot3.0 + JDK17的踩坑记录
    深入解析:数据库连接池的必要性与优化策略
    嵌入式开发:从C语言成功过渡的3个技巧
    蓝牙技术|我国已成为全球最大新能源车市场,蓝牙技术起到重要作用
  • 原文地址:https://blog.csdn.net/u012117034/article/details/125619807
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号