FFmpeg的流程

news2024/10/6 14:34:22

文章目录

  • 前序
  • 代码结构
  • FFmpeg.c
  • ffmpeg_opt.c
  • 小结

前序

之前看过FFmpeg的各种命令,然后不是很理解。相信很多人都不是很理解,毕竟,单纯的去记住那些命令行本身就需要很大的内存,我们的大脑内存又有限,所以,还是去看下代码。既辅助大脑去理解那些命令行,又提升了自己的代码理解能力,的确是一件有意义的事情。这次,就简单看下流程。

代码结构

在这里插入图片描述
先看下上图,主要是讲解FFmpeg_opt.c这个代码流程。至于FFmpeg.c,这个文件,太多意义了。可以简单看下。

FFmpeg.c

看这个c文件,先找main函数。代码流程如下:
在这里插入图片描述
main函数,就这么多行,再看看这个文件,已经4900多行了,还没有完。这次别的不看,直接看ffmpeg_parse_options函数,也就是解析命令行,像我们输入的命令,都在着函数里。接下来看看。

ffmpeg_opt.c

还是先看看ffmpeg_parse_options函数,如下图:
在这里插入图片描述
虽然看着这么多行,内容居多。先看下主要流程,如下图:
在这里插入图片描述
解析一个-vcodec代码流程。如上图。

在这里插入图片描述
所有的命令行,都在这里,名字,对应的函数,都在。有点像lua里边的c代码格式,看过的都应该不陌生,没看过也不要紧,有需要,可以去看看,也可以去看看我之前写的文章。打住了。继续看看流程。输入函数的流程,输出函数的流程。

在这里插入图片描述
这个是open_output_file的流程,然后还有一个open_input_file的流程。看下我画的流程图吧,如下:
在这里插入图片描述
这个代码相对来说比较少,从逻辑上理解,属于输入,是大部分输入的存储,方便后边输出的时候处理。

小结

这次写了FFmpeg的大致流程,如果详细了解,还需要结合代码去学习,当然,也可以去学习学习。毕竟,有些东西是整理好的,还有些指导,也还不错。不过,还是要自己耐心去学习,去理解。OK,结束。

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

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

相关文章

spring cloud alibaba sentinel 配置过程 流控 降级热点 授权

目录 1.基础理论 2.配置 3.加入依赖和配置文件 4.流控 1.基础理论 Sentinel是阿里开源的项目,提供了流量控制、熔断降级、系统负载保护等多个维度来保障服务之间的稳定性。 丰富的应用场景 :Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心…

锁相环的一些学习笔记--(1)

下图两组1.2.3可以对应起来; 一些分析: 1.根据这个可知最后vco_voltage停在0.5v 参考资料: 1. Matlab https://www.bilibili.com/video/BV1bR4y1Z7Xg/?spm_id_from333.1296.top_right_bar_window_history.content.click&vd_source555…

windows 搭建 go开发环境

go语言(或 Golang)是Google开发的开源编程语言,诞生于2006年1月2日下午15点4分5秒,于2009年11月开源,2012年发布go稳定版。Go语言在多核并发上拥有原生的设计优势,Go语言从底层原生支持并发,无须…

Google Play 提示 “您的设备与此版本不兼容“ 解决方案

一、 问题概述Google Play提示“您的设备与此版本不兼容”,无法安装应用。 遇到问题的设备为Xiaomi Mi A3,查了下这台手机的基本信息,Android One系统,版本分为9.0、10.0、11.0。 二、 问题分析Google Play的过滤器 通常有以下5种…

2024-5-10-从0到1手写配置中心Config之Spring Value热更新

定义SpringValueProcessor处理类 实现BeanPostProcessor后置处理器接口,扫描所有的Spring value,保存起来。实现ApplicationListener接口,在配置变更时,更新所有的spring value 实现BeanPostProcessor后置处理器接口 实现postPr…

Value-Based Reinforcement Learning(1)

Action-Value Functions Discounted Return(未来的reward,由于未来存在不确定性,所以未来的reward 要乘以进行打折) 这里的依赖actions ,和states 这里 Policy Function : ,表达了action的随机性 S…

HILL密码

一:简介 Hill密码又称希尔密码是运用基本矩阵论原理的替换密码,属于多表代换密码的一种,由L e s t e r S . H i l l Lester S. HillLesterS.Hill在1929年发明。 二:原理 1.对于每一个字母,我们将其转化为对应的数字&am…

RS8751XF功能和参数介绍及PDF资料

以下是关于RS8751XF的功能和参数的介绍: 功能描述: 高速、宽带单通道运算放大器 轨到轨输入和输出,确保较大的动态范围 极高的增益带宽乘积(GBW):250 MHz,适合高频应用 极高的压摆率(SR&#xf…

SparkStreaming架构原理(详解)

Spark概述 SparkStreaming架构原理 Spark Streaming的架构主要由以下几个关键部分组成。 1.数据源接收器(Receiver) 执行流程开始于数据源接收阶段,其中接收器(Receiver)负责从外部数据源获取数据流。 接收器可以连…

SpringBoot+Vue开发记录(六)-- 后端配置mybatis

原型图什么的就先不管,后面再写。 本篇文章的主要内容就是springboot通过mybatis操作数据库实现增删改查。 重点是mybatis配置与相关文件数据,以后开新项目忘记了怎么配置的话可以再照着这个搞。 这算是最基础的部分了吧。 文章目录 一,配置…

安全分析[2]之计算机系统安全分析

文章目录 计算机系统结构计算机系统安全风险软件安全漏洞 计算机系统结构 计算机系统安全风险 计算机硬件安全:因设计不当、器件的质量及使用寿命的限制、外界因素等导致的计算机系统硬件出现故障,进而影响到整个系统的安全。特别是如果是CPU出现安全漏…

Docker容器网络互联

默认情况下:所有容器都是以bridge方式链接到Docker的一个虚拟网桥上。 命令 docker network create 创建一个网络 docker network ls 查看所有网络 docker network rm 删除指定网络 docker network prune 清除未使用的网络 docker network connect 使容器加入某个网…

JUC框架(CAS、ATOMIC、AQS)

文章目录 JUC之CASJUC之ATOMICJUC之AQSAQS简介AQS原理 更多相关内容可查看 JUC之CAS **CAS(compareAndSwap)**也叫比较交换,是一种无锁原子算法,其作用是让**CPU**将内存值更新为新值,但是有个条件,内存值…

Android Compose 八:常用组件 Switch

Switch 切换按钮 val isChecked remember { mutableStateOf(true) }Switch(checked isChecked.value,onCheckedChange {Log.i("text_compose","onCheckedChange>>"it)isChecked.value it})效果 默认颜色 应该对应 主题色 1.1 thumbContent 按钮…

表查询基础【mysql】【表内容 增,删,改,查询】

博客主页:花果山~程序猿-CSDN博客 文章分栏:Linux_花果山~程序猿的博客-CSDN博客MySQL之旅_花果山~程序猿的博客-CSDN博客Linux_花果山~程序猿的博客-CSDN博客 关注我一起学习,一起进步,一起探索编程的无限可能吧!让我…

DDR5—新手入门学习(一)【1-5】

目录 1、DDR背景 (1)SDR SDRAM时代 : (2)DDR SDRAM的创新 : (3)DDR技术的演进 : (4)需求推动: 2、了解内存 (1&…

领导VS管理:技术团队掌舵者的双重角色解析

文章目录 引言一、管理1.1 管理的定义1.2 管理的特点1.3 管理的作用 二、领导2.1 领导的定义2.2 领导的特点2.3 领导的作用 三、管理与领导的互补性3.1 互补策略 总结 引言 在科技飞速发展的今天,技术团队作为推动企业创新的核心力量,其管理显得尤为关键…

python command乱码怎么解决

python command乱码怎么解决?具体方法如下: 先引入import sys 再加一句:typesys.getfilesystemencoding() 然后在输出乱码的数据的后面加上“.decode(utf-8).encode(type)”。 比如输入“ss”乱码。 就写成print ss.decode(utf-8).encode(typ…

【Go专家编程——协程】

1 协程的概念 1.1 基本概念 进程是应用程序的启动实例,每个进程都有独立的内存空间,不同进程通过进程间的通信方式来通信线程从属于进程,每个进程至少包含一个线程,线程是CPU调度的基本单元,多个线程之间可以共享进程…

leetcode:计数质数

class Solution { public:// 如果 x 是质数&#xff0c;那么大于 x 的 x 的倍数 2x,3x… 一定不是质数int countPrimes(int n) {vector<int> isPrime(n, 1);int ans 0;for (int i 2; i < n; i) {if (isPrime[i]) {ans 1;if ((long long)i * i < n) {for (int j …