FFmpeg的流程

news/2024/9/25 21:22:47/

文章目录

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

前序

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

代码结构

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

FFmpeg.c

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

ffmpeg_optc_14">ffmpeg_opt.c

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

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

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

小结

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


http://www.ppmy.cn/news/1463106.html

相关文章

ArrayList效率分析与LinkedList性能对比

一、ArrayList 1.数据结构 数组 -> 顺序表。 2.插入数据 在数组中间插入数据,其后的数据都会往后copy,时间复杂度为O(n)。 3.删除数据 与插入类似,同样涉及数据的copy,时间复杂度为O(n)。 4.查找元素 通过下标查找元素…

华为云部署前端项目发生的事

今天刚买了一个云服务,想着部署一下前端项目: 使用的是 docker nginx 部署 部署方法,在以往的文章中有介绍,如有兴趣可以看看docker 部署; 结果发现部署成功之后,竟然无法访问,从命令来看&…

python使用pandas操作xlsx

python操作xlsx有很多种方法,以前使用其他控件操作,使用这个pandas之后发现更好用。场景,我需要读取xlsx模板,然后根据模板去获取数据,根据用户要求导出指定的xlsx文件。 读取文件 data pd.read_excel(sleepStageAh…

AI 谈“浔川AI翻译机”

在天工AI,天工AI在全网搜索“浔川AI翻译机”。 1 创作助手谈“浔川AI翻译机”: “浔川AI翻译机”是一个利用人工智能技术进行语言翻译的设备或应用程序。它可以将一种语言的文字或口语翻译成另一种语言,以实现不同语言之间的沟通和理解。浔…

15分钟Element-UI快速入门

Element-UI 是一个基于 Vue.js 2.0 的桌面端组件库,它提供了丰富的、可复用的组件,帮助开发者快速构建出美观且功能强大的网页应用。以下是一个 Element-UI 的快速入门指南: 1. 安装 Element-UI 首先,你需要在你的 Vue.js 项目中…

【Linux】如何优雅的检查Linux上的用户登录、关机和重启日志

在诸如Ubuntu、Debian、Linux Mint、Fedora和Red Hat等广受欢迎的Linux发行版中,系统会忠实记录用户的登录、关机、重启以及运行时长信息。这些信息对管理员调查事件、排查故障或汇总用户活动报告极为宝贵。 Linux系统及应用程序日志通常保存在/var/log/目录下&…

「 网络安全常用术语解读 」静态应用安全测试SAST详解

1. 概念 静态应用安全测试 (SAST,Static Application Security Testing) 也称静态分析,是一种测试方法,通过分析源代码来发现应用受到攻击的安全漏洞。SAST 在编译代码之前扫描应用,故又经常被称为白盒测试。 2. SAST 典型应用场…

js禁止使用浏览器的前进后退按钮的方法

效果图: // 替换当前页面的历史记录,使用户不能通过浏览器的前进后退按钮导航 history.replaceState(null, null, location.href);// 监听浏览器的历史记录变化事件 window.onpopstate function(event) {// 再次替换当前页面的历史记录,确保…