FFmpeg基础

news2024/11/15 9:37:56

FFmpeg介绍

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

FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、Mac OS X等。这个项目最早由Fabrice Bellard发起,2004年至2015年间由Michael Niedermayer主要负责维护。许多FFmpeg的开发人员都来自MPlayer项目,而且当前FFmpeg也是放在MPlayer项目组的服务器上。项目的名称来自MPEG视频编码标准,前面的"FF"代表"Fast Forward"。 FFmpeg编码库可以使用GPU加速。【----摘自百度百科】

目前已经迭代到FFmpeg5.1 version。

官网:http://ffmpeg.org/

FFmpeg编译与调试

Mac平台编译

  • 历史版本下载:http://www.ffmpeg.org/releases/
  • 依赖库:pkg-config、nasm、yasm、cmake、sdl
  • 编译(链接需要的库)
   ./configure --enable-libx264 --enable-libx265 --enable-openh264 --enable-gpl
   make -j 8
   sudo make install

调试

  • Mac平台xcode调试

参考:https://blog.csdn.net/yanceyxin/article/details/88820851

  • Mac平台vscode调试
先编译ffmpeg:
./configure --enable-debug
 make -j8
然后配插件:
 组合键“shift+command+X”或者直接搜插件,出入“c/c++”、“c/c++ clang command adapter”,重启生效;
 
 组合件“shift+command+D”(或者直接左边按键),跳转到调试页面,选择c++(GDB/LLDB)环境
 
 弹出launch.json 文件,修改如下:其中program是要调试的运行程序,args是命令行参数,preLaunchTask是编译的任务名称;
 
 按下组合键“⇧⌘B(shift+command+B)”,点击"没有找到要运行的生成任务。配置生成任务…",点击"使用模版创建task.json文件",点击"Others运行任意外部命令的示例",弹出task.json,修改如下: 在对应源码里可以打断点进行调试;

FFmpeg的组成

FFMpeg的框架基本组成主要有AVFormat、AVCodec、AVFilter、AVDevice、AVUtil等几个模块库组成,还包括一些其他doc、tools、swresample、swscale、postproc等部分。

├── CONTRIBUTING.md
├── COPYING.GPLv2
├── COPYING.GPLv3
├── COPYING.LGPLv2.1
├── COPYING.LGPLv3
├── CREDITS
├── Changelog
├── INSTALL.md
├── LICENSE.md
├── MAINTAINERS
├── Makefile
├── README.md
├── RELEASE
├── VERSION
├── compat
├── configure
├── doc
├── ffbuild
├── fftools
├── libavcodec
├── libavdevice
├── libavfilter
├── libavformat
├── libavresample
├── libavutil
├── libpostproc
├── libswresample
├── libswscale
├── presets
├── tests
└── tools

在这里插入图片描述

AVFormat

libavformat is a library containing demuxers and muxers for multimedia container formats.
封装模块,包括MP4、FLV、TS等文件封装格式,也包括RTMP、RTSP、HLS等网络协议封装格式。

AVCodec

libavcodec is a library containing decoders and encoders for audio/video codecs.
编解码模块。

AVFilter

libavfilter is a library containing media filters.
滤镜模块。

AVDevice

libavdevice is a library containing input and output devices for grabbing from and rendering to many common multimedia input/output software frameworks, including Video4Linux, Video4Linux2, VfW, and ALSA.
设备输入输出模块。

AVUtil

libavutil is a library containing functions for simplifying programming, including random number generators, data structures, mathematics routines, core multimedia utilities, and much more.
基础功能模块,一般其他模块都依赖它。

swscale

libswscale is a library performing highly optimized image scaling and color space/pixel format conversion operations.
图像采样和颜色格式转化模块。

swresample

libswresample is a library performing highly optimized audio resampling, rematrixing and sample format conversion operations.
音频重采样、重矩阵和采样格式转化模块。

FFmpeg命令行使用

参考:https://blog.csdn.net/yanceyxin/article/details/126453647

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/420479.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

老胡的周刊(第086期)

老胡的信息周刊[1],记录这周我看到的有价值的信息,主要针对计算机领域,内容主题极大程度被我个人喜好主导。这个项目核心目的在于记录让自己有印象的信息做一个留存以及共享。🎯 项目MochiDiffusion[2]在 MacOS 上运行原生的 Stab…

20230412-使用STM32实现内部flash模拟U盘

最近用STM32F103CBT6搞了个U盘功能 ​ 工程师干了几年后,基本会有小外包的生活,算是赚外快吧,搞小钱改善伙食,嘻嘻。。。。 ​ 最近有个客户找到我,说是否通过ST的单片机搞个U盘功能,有些文件通过U盘拖拽…

【Linux进阶篇】系统监控命令

目录 🍁proc文件系统 🍁常见系统监视命令 🍃uptime 🍃free -h 🍃vmstat 🍃mpstat 🍃iostat 🍃sar 🍃iotop 🍃htop 🍃glances 🦐博客主…

Java集合Collections和元素排序之Comparable排序接口讲解

Collections工具类: Java里关于集合的工具类,包含有各种有关集合操作的静态多态方法,不能实例化(把构造函数私有化) 。 和Collection的区别 : Collection是接口,提供了对集合对象进行基本操作的通用接口方法,List、Set…

智能网卡相关知识(smart nic 、DPU)

网卡作为穿行在网络与计算之间的桥梁,是可以解决计算瓶颈的关键硬件。 随着CPU 密度和数据中心网络带宽的进一步提升,用户对预期性能的需求,系统运行平稳性都会有更高的要求。云厂商一方面面临巨大的成本压力,另一方面面临巨大的…

动态规划算法解决背包问题,算法分析与C语言代码实现,时间效率解析

🎊【数据结构与算法】专题正在持续更新中,各种数据结构的创建原理与运用✨,经典算法的解析✨都在这儿,欢迎大家前往订阅本专题,获取更多详细信息哦🎏🎏🎏 🪔本系列专栏 -…

28 · 搜索二维矩阵

LintCode 炼码 class Solution { public:/*** param matrix: matrix, a list of lists of integers* param target: An integer* return: a boolean, indicate whether matrix contains target*/bool searchMatrix(vector<vector<int>> &matrix, int target) …

AI制药 - AlphaFold DB PDB 数据集的多维度分析与整理 (2)

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://blog.csdn.net/caroline_wendy/article/details/130118339 数据集&#xff1a;AlphaFold Protein Structure Database 下载地址&#xff1a;https://alphafold.ebi.ac.uk/download Alp…

springboot 部署k8s(二)

系列文章目录 目录 系列文章目录 前言 操作步骤 1.springboot.yaml文件 2.查看deployment 3.查看service服务 4.验证服务 总结 前言 springboot 部署到k8s 上。里面涉及了deployment, Service, NodePort. 操作步骤 1.springboot.yaml文件 apiVersion: apps/v1 kind: …

【C++】C/C++内存管理:

本篇的内存管理主要是动态内存管理。 1.C中的malloc、realloc、calloc和free函数&#xff1a; 【面试问题】 malloc、calloc和realloc的区别是什么&#xff1f; malloc申请的内存值是不确定的 calloc却在申请后&#xff0c;对空间逐一进行初始化&#xff0c;并设置值为0 异…

MATLAB基于卡尔曼滤波的锂蓄电池SOC设计matlab仿真代码(链接在文章结尾)

用自适应卡尔曼滤波方法&#xff0c;基于锂离子动力电池等效电路模型&#xff0c;在未知干扰噪声环境下&#xff0c;在线估计电动汽车锂离子动力电池荷电状态&#xff08;SOC&#xff09;。 相比于其它电池模型&#xff0c;等效电路模型可以更直观地表现输入与输出&#xff0c;…

01-Android 序列化与反序列化

1. 背景 在日常开发过程中&#xff0c;经常遇到程序读取文件&#xff0c;将文件数据转换为对象&#xff0c;程序通过对象传输数据&#xff0c;或者通过对象读取数据。同时也会经常遇到对象数据写入文件操作。 如果采用常规的文件读写&#xff0c;然后再进行赋值&#xff1b;那…

每日学术速递4.16

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.SpectFormer: Frequency and Attention is what you need in a Vision Transformer 标题&#xff1a;SpectFormer&#xff1a;频率和注意力是您在 Vision Transformer 中所需要的 …

医院不良事件报告系统源码:基于PHP+vue2+element+laravel8技术开发

医院不良事件报告系统源码 文末获取联系&#xff01; 技术架构&#xff1a;前后端分离&#xff0c;仓储模式&#xff0c; 开发语言&#xff1a;PHP 开发工具&#xff1a;vscode 前端框架&#xff1a;vue2element 后端框架&#xff1a;laravel8 数 据 库&#xff1a;mysql5…

一文读懂Java类加载全过程,面试必备!

1、概述 Java类加载过程是Java虚拟机&#xff08;JVM&#xff09;将.class文件中的字节码装载到内存中&#xff0c;并对字节码进行验证、准备和初始化的过程。这个过程涉及到了Java虚拟机的类加载器、运行时数据区等多个方面&#xff0c;其中包含了很多的细节和技术问题。 类加…

前端开发神器bootstrap介绍

想必刚开始学习前端的小伙伴在为设计优美的前端页面很苦恼吧&#xff0c;心中有好的比较不错的UI样式却无法绘制出来&#xff0c;学习呢又可能会有点困难&#xff0c;其实前端是很容易并不难学的&#xff0c;在前端设计上也有很多的开源库的&#xff0c;这些第三方的开源库已经…

12、视图解析器与模板引擎

文章目录1、视图解析1.1 spring boot支持的第三方模板引擎技术1.2、视图解析原理流程2、模板引擎-Thymeleaf2.1、thymeleaf简介2.2、基本语法1、表达式2、字面量3、文本操作4、数学运算5、布尔运算6、比较运算7、条件运算8、特殊操作2.3、设置属性值-th:attr2.4、迭代2.5、条件…

【数据结构】顺序表(上)

所属专栏&#xff1a;初始数据结构 博主首页&#xff1a;初阳785 代码托管&#xff1a;chuyang785> 感谢大家的支持&#xff0c;您的点赞和关注是对我最大的支持&#xff01;&#xff01;&#xff01; 博主也会更加的努力&#xff0c;创作出更优质的博文&#xff01;&#x…

(十六)排序算法-桶排序

1 基本介绍 1.1 概述 桶排序 &#xff08;Bucket sort&#xff09;或所谓的箱排序&#xff0c;是一个排序算法&#xff0c;工作的原理是将数组分到有限数量的桶里。每个桶再个别排序&#xff08;有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序&#xff09;&a…

ZYNQ:【1】深入理解PS端的TTC定时器(Part1:原理+官方案例讲解)

碎碎念&#xff1a;好久不见&#xff0c;甚是想念&#xff01;本期带来的是有关ZYNQ7020的内容&#xff0c;我们知道ZYNQ作为一款具有硬核的SOC&#xff0c;PS端很强大&#xff0c;可以更加便捷地实现一些算法验证。本文具体讲解一下里面的TTC定时器&#xff0c;之后发布的Part…