当前位置: 首页 > news >正文

建站最便宜的平台墨刀可以做网站原型图吗

建站最便宜的平台,墨刀可以做网站原型图吗,求个网站知乎,网站服务器开发摘要:前一段时间熟悉了下FFmpeg主流程源码实现,对FFmpeg的整体框架有了个大概的认识,因此在此做一个笔记,希望以比较容易理解的文字描述FFmpeg本身的结构,加深对FFmpeg的框架进行梳理加深理解,如果文章中有…

  摘要:前一段时间熟悉了下FFmpeg主流程源码实现,对FFmpeg的整体框架有了个大概的认识,因此在此做一个笔记,希望以比较容易理解的文字描述FFmpeg本身的结构,加深对FFmpeg的框架进行梳理加深理解,如果文章中有纰漏或者错误欢迎指出。本文描述了FFmpeg编解码框架的工程结构,基本构成以及大体的调用流程。因为FFmpeg的滤镜是相对独立的一个模块,因此在此不会进行描述。
  关键字:FFmpeg,Framework
  阅读须知:阅读本文前,你首先需要了解最基本的音视频处理相关的知识,对于这些知识你至少需要最基本的了解,比如知道什么是容器,什么是编解码器,以及大概的工作流程即可。
  FFmepg是一个用C语言实现的多媒体封装、解封转、编解码开源框架,支持了多种IO协议操作,媒体封装格式的封装与解封装以及编解码格式编解码器(包括硬解和软解)。任何软件都可以在FFmpeg的License范围内合理地基于FFmpeg进行开发。FFmpeg有两种开源协议:

  • GPL,该协议是具有传染性的,如果使用了GPL部分的代码(FFmpeg可以配置是否开关这部分代码)对应的软件也必须开源否则有法律风险;
  • LGPL,允许以动态发布的形式使用,即将FFmpeg编译为动态库使用,但是修改到了FFmpeg部分的代码,修改的部分也需要开源,一般商业软件都会采用这种方式来进行商业软件的开发。

  FFmpeg is the leading multimedia framework, able to decode, encode, transcode, mux, demux, stream, filter and play pretty much anything that humans and machines have created. It supports the most obscure ancient formats up to the cutting edge. No matter if they were designed by some standards committee, the community or a corporation. It is also highly portable: FFmpeg compiles, runs, and passes our testing infrastructure FATE across Linux, Mac OS X, Microsoft Windows, the BSDs, Solaris, etc. under a wide variety of build environments, machine architectures, and configurations.

1 FFmpeg工程

  本小节简单描述下FFmpeg的工程结构相关的内容,以期对FFmpeg工程本身的基本构成有一个基本的认识。

1.1 FFmpeg工程结构

  FFmpeg本身的目录结构比较清晰,我们从目录名称中基本就能看出该目录下可能包含哪些文件具体用来干什么。

  • .:当前目录下存储的是一些编译和项目相关的配置文件,比如Makefile,License等;
  • compat:兼容文件;
  • doc:文档,以及一些FFmpeg使用的示例,如果学习FFmpeg的话强烈建议阅读示例;
  • ffbuild:编译相关的一些文件,比如依赖选项等等;
  • fftools:可以编译成可执行文件的一些工具实现,比如ffplay,ffmpeg,ffprobe等工具;
  • libavcodec:编解码核心,编解码相关的文件都存放在这里,比如h264dec.c等;
  • libavdevice:设备相关,比如DShow等;
  • libavfilter:滤镜特效处理;
  • libavformat:IO操作以及封装格式的封装和转封装等处理;
  • libavutil:工具库,比如一些基本的字符串操作,图像操作等;
  • libavpostproc:一些效果后处理相关的内容,一般通过filter处理;
  • libswresample:音频重采样处理;
  • libswscale:视频缩放、颜色空间转换以及色调映射等;
  • presets:编解码器的配置文件,参考FFmpeg-Present-files
  • tests:测试示例;
  • tools:一些简单的工具。

2 FFmpeg架构

2.1 FFmpeg的总体架构

在这里插入图片描述

  FFmpeg各个模块是互相独立的,都可以单独使用,比如解封装器只用来对媒体进行解封装或者封装拿到编码器的裸流,或者编解码器直接对裸流数据进行编解码,亦或者使用工具集对已经解码完的数据尽兴处理。
  编解码模块支持多种不同编解码器,所有的编解码器所使用的参数和当前编解码器相关的Context都是使用AVCodecContext描述。而FFmpeg中每个具体的解码器都有一个静态的AVCodec描述当前解码器如何解码,这个是有一套统一的接口来定义的。上层拿到AVCodecContextAVCodec就可以初始化解码器进行解码了,只不过使用FFmpeg提供的解码接口更加方便。FFmpeg并没有硬件解码器归类的AVCodec下面,而是在其下层另外规定了一套AVHWAccel,通过AVCodec来描述该硬件解码器。
  封装和解封装支持多种不同的媒体文件类型,FFmpeg中讲一个文件抽象为AVFormatContext,而内部分别将输入流和输出流分别抽象为AVInputFormat,AVOutputFormatAVInputFormat,AVOutputFormat用来描述当前媒体文件的相关参数以及对媒体文件进行封装和解封装,而具体的操作通过AVIO来进行。AVIO抽象了具体的文件IO操作,类似编解码器每种类型的输入流都有各自的描述,封装器和解封装器同理。
  工具集也是独立的,只是一些工具函数的集合。
  滤镜用来对裸数据进行一些特效上的处理。(本文不会过多讨论滤镜)

2.2 代码结构

  FFmpeg虽然是用C语言写的但是其基本的实现思想是按照OOP的思想实现的,每个具体的格式都有自己的Context和描述类然后通过函数指针来描述具体实例的实际实现,也就是上面描述的Context->Context->Context->....>Implementation这种形式,为了对当前处理的对象统一抽象就会有一个Context来描述。而每个Context都有一个AVClassopaue来描述当前结构的参数和独有的一些数据,通过这种方式保持了接口的统一的同时,又能兼顾差异性。
在这里插入图片描述

2.3 调用流程

  FFmpeg的核心就是封装/解封装和解码那一套,下面的流程图是一个大概,有一部分调用被省略了。
在这里插入图片描述

http://www.yayakq.cn/news/879090/

相关文章:

  • php网站后台验证码不显示网站管理系统怎么做
  • 有什么网站可以做电子版邀请函腾讯云官网登录入口
  • 诚聘网站开发公司的门户网站模版
  • 网站空间多久续一次费旅游营销网站建设
  • 淮安企业网站哪个网站可以做app界面
  • 北京北京网站建设手机网站开发算什么费用
  • 个人网站备案通过后网站开发从零到上线
  • 984网站建设项目.net 网站开发视频
  • 单位网站建设费如何入账广告设计公司简介范文
  • 网站建设的需求客户网站开发技术 下载
  • 门户网站建设工作情况建立公司网站的目的
  • 佛山品牌网站设计怎么免费推广自己网站
  • 商业网站建设知识点青岛可以做网站的公司
  • 织梦模板添加网站地图IT科技资讯新闻类织梦网站模板
  • 平湖专业网站制作品牌网站建设怎么收费
  • 做宠物网站赚钱吗广告设计与制作网站
  • 淄博网站排名seo哈尔滨房地产网站建设
  • 平台网站建设网站廊坊网站自助建站
  • seo对网站的重要性做网站需要什么学历
  • 网站怎么做防御手机端快速建站工具
  • 广州怎么找做网站的公司超级简历免费模板
  • 专注于网站营销服务网页设计版面划分
  • 北京网站建设认知山西网站建设报价单
  • 外贸建站cms东台网站制作公司
  • 如何查看网站做没做竞价石狮服装城商家微网站建设
  • 网站制作公司技术部门seo优化关键词排名
  • 有什么做海报的网站吗wordpress仪表盘加速
  • 凡科做的网站好吗西安市未央区建设局官方网站
  • 装饰公司网站模板公司简历模板免费
  • 成都网站建设推来客网站系统报价阿里万网站建设