ffmpeg学习01

ffmpeg学习第一章

一、概述

初衷

这里是属于ffmpeg学习的一个记录,目的在于记录学习ffmpeg的过程,将所学的知识总结在这里。一方面提高自己音视频基础能力,另外一方面需要从ffmpeg这个优秀的开源项目里面学习里面优秀的程序设计以及提高自己c代码的综合能力,积累自己在大型开源项目上面的阅读能力,开拓自己的视野。以及以此系列文章分享给小伙伴做为学习资料的参考。

在这里之前,我对ffmpeg完成的积累:已经对ffmpeg编译的过程有一定的熟练度,对常见的编译命令有一定的了解,对不同平台的编译操作流做过实践。通过源码阅读工具sourcetrail找到了一个阅读ffmpeg源码的方法。我知道ffmpeg包含的3个可执行程序里面大致能实现什么功能,我已经对部分功能进行了实践,对使用ffplay、ffmpeg等主要的命令有一定的熟练度。

计划

自上而下,从知识粒度大的内容,广度大的内容,逐步推进到粒度小、内容更加深的内容。以ffmpeg作为树干,学习的过程中在涉及到其他的内容的时候,另做学习总结。学习的细节以及思考都会记录在文章里面,对阅读中的卡点难点我都会做出记录,将整个学习的生命周期里面重要的点和思考都做出记录,企图在阅读其他大型的开源项目的时候能提供经验参考。

二、音视频播放流程概述以及相关基础知识

播放媒体文件拆分下来大致分成一下几个步骤。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nQ0YqFUz-1658415079050)(asset/image-20220716135142066.png)]

对编码器和解码器进行简单的阐述,后面ffmpeg的主要分析都是基于以上的流程进行分析,可大致留下一个印象。了解这里的目的是能支撑阅读ffmpeg源码即可(当然,有更多的积累更好,只是不在这里总结对应的编码,复用的相关知识,后面会补充上贴上链接在这里)。

编码器

作用是将音频、视频的原始数据压缩成更小的体积。便于传输

复用器

将音频、视频流数据通过一定的规则进行整合,变成一个媒体文件(如mp4、flv)

三、ffmpeg官网了解

区别于这里看一下,那里看一下的“碎片式”学习。我的想法是不如从ffmpeg官网开始,一步一步自己摸索,“实践得真知”,摸索的过程可以提高自己解决问题的能力,以及阅读开源项目的能力。

ffmpeg官网:https://github.com/FFmpeg/FFmpeg

首先,进入官网,拉到最后面,查看官网对ffmpeg的自述文件。

FFmpeg 自述文件

FFmpeg 是一个库和工具的集合,用于处理音频、视频、字幕和相关元数据等多媒体内容。

图书馆

  • libavcodec提供更广泛的编解码器的实现。
  • libavformat实现流协议、容器格式和基本 I/O 访问。
  • libavutil包括散列器、解压缩器和杂项实用功能。
  • libavfilter提供通过连接滤波器的有向图改变解码音频和视频的方法。
  • libavdevice提供访问捕获和回放设备的抽象。
  • libswresample实现音频混合和重采样例程。
  • libswscale实现颜色转换和缩放例程。

工具

  • ffmpeg是一个命令行工具箱,用于操作、转换和流式传输多媒体内容。
  • ffplay是一个简约的多媒体播放器。
  • ffprobe是一个简单的分析工具来检查多媒体内容。
  • aviocat额外的小工具,例如ismindexqt-faststart

文档

离线文档位于**doc/**目录中。

在线文档可在主网站wiki中找到。

例子

编码示例可在doc/examples目录中找到。

执照

FFmpeg 代码库主要是 LGPL 许可的,可选组件是 GPL 许可的。有关详细信息,请参阅许可证文件。

贡献

补丁应使用 git format-patch或提交到 ffmpeg-devel 邮件列表git send-email。应避免 Github 拉取请求,因为它们不属于我们的审核流程,将被忽略。

如此一来,我们就对ffmpeg从宏观上有了大致的了解,总结几点。

  1. ffmpeg里面包含了多种不同功能的库,不同的库实现的功能如上。
  2. ffmpeg主要实现了3个工具,可以通过命令行来执行操作。
  3. 3个工具都可以通过点击进入到对应的命令行详解以及原理解析。

上面的内容,能从中利用的有“doc/examples”这个选项,可以通过里面的例子入手分析ffmpeg源码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值