ffmpeg基础——基本框架介绍
多媒体基础
- 视频格式
- 字幕格式
- 多媒体容器文件组成
- 软解和硬解
- 分辨率与码率、帧率
- ffmpeg代码模块组成
视频格式
原始视频数据:通过摄像头等驱动获取的没有经过编码的数据,常见的格式有:RGB24、YUV2、YV2(这些都是没有编码的原始数据)
多媒体视频格式:视频格式可以分为适合本地播放的本地影像视频和适合在网络中播放的网络流媒体影像视频两大类。尽管后者在播放的稳定性和播放画面质量上可能没有前者优秀,但网络流媒体影像视频的广泛传播性使之正被广泛应用于视频点播、网络演示、远程教育、网络视频广告等等互联网信息服务领域。
MPEG运动图像专家组是 Motion Picture Experts Group 的缩写。这类格式包括了 MPEG-1,MPEG-2 和 MPEG-4在内的多种视频格式。
使用 MPEG-1 的压缩算法,可以把一部 120 分钟长的电影压缩到 1.2 GB 左右大小。MPEG-2 则是应用在 DVD 的制作,同时在一些 HDTV(高清晰电视广播)和一些高要求视频编辑、处理上面也有相当多的应用。使用
MPEG-2 的压缩算法压缩一部 120 分钟长的电影可以压缩到 5-8 GB 的大小(MPEG2 的图像质量是 MPEG-1 无法比拟的)。MPEG 系列标准已成为国际上影响最大的多媒体技术标准,其中 MPEG-1 和 MPEG-2 是采用相同原理为基础的预测编码、变换编码、熵编码及运动补偿等第一代数据压缩编码技术;MPEG-4(ISO/IEC 14496)则是基于第二代压缩编码技术制定的国际标准,它以视听媒体对象为基本单元,采用基于内容的压缩编码,以实现数字视音频、图形合成应用及交互式多媒体的集成。MPEG 系列标准对 VCD、DVD 等视听消费电子及数字电视和高清晰度电视(DTV&&HDTV)、多媒体通信等信息产业的发展产生了巨大而深远的影响。
AVI,音频视频交错Audio Video Interleaved的英文缩写。AVI 这个由微软公司发表的视频格式,在视频领域可以说是最悠久的格式之一。AVI 格式调用方便、图像质量好,压缩标准可任意选择,是应用最广泛、也是应用时间最长的格式之一。
ASF Advanced Streaming format 高级流格式。ASF 是 MICROSOFT 为了和的 Real player 竞争而发展出来的一
种可以直接在网上观看视频节目的文件压缩格式。ASF 使用了 MPEG4 的压缩算法,压缩率和图像的质量都很不错。因为 ASF 是以一个可以在网上即时观赏的视频“流”格式存在的,所以它的图像质量比 VCD 差一点点并不出奇,但比同是视频“流”格式的 RAM 格式要好。
WMV
一种独立于编码方式的在 Internet 上实时传播多媒体的技术标准,Microsoft 公司希望用其取代 QuickTime 之类的技术标准以及 WAV、AVI 之类的文件扩展名。WMV 的主要优点在于:可扩充的媒体类型、本地或网络回放、可伸缩的媒体类型、流的优先级化、多语言支持、扩展性等
FLV
FLV 是 FLASH VIDEO 的简称,FLV 流媒体格式是一种新的视频格式。于它形成的文件极小、加载速度极快,使得网络观看视频文件成为可能,它的出现有效地解决了视频文件导入 Flash 后,使导出的 SWF 文件体积庞大,不能在网络上很好的使用等缺点。
字幕格式
外挂字幕:是视频文件和字幕文件分离,在播放的时候要导入字幕文件。比如 DVD 就会自动导入字幕。外挂字幕的好处是:可以导入自己国家的语言。
内嵌字幕:视频文件和字幕文件已经集成到了一起,没有办法改变和去掉了。
外挂字幕的三种格式:
1、srt 格式:这是最好的,体积小,用记事本可以打开编辑。
2、sub+idx:这种是图形字幕,只能用字幕转换软件;体积较大。
3、ass 字幕:网上比较少,比 srt 多一些特效。
多媒体容器文件组成
一般都包括文件头部分、索引部分和多媒体数据部分
头部分:说明了多媒体数据符合的压缩标准及规范信息,多媒体数据符合的规范信息可以包括视频的分辨率、帧率,音频的采样率等。
索引部分: 由于多媒体数据通常会被分成若干块,各块数据之间也可能是不连续存储的,因此需要再索引部分建立多媒体数据的存储位置索引(如图 2 所示),其详细显示了视频数据存储位置索引,用来记录相应数据块的存储位置的偏移量,由于各数据块的大小可能不同,因此也可能需要在索引部分建立各种多媒体数据块的尺寸大小索引,用来记录相应数据块的尺寸大小。此外在索引部分还建立了其他索引,比如音视频同步索引等等。PC 上播放这些多媒体容器文件时,一般是将索引一次性的全部放到内存中,然后在播放中根据操作(快进、快退等)来通过数据索引得到所需的数据。这个貌似和项目里面的视频信息文件的作用类似
多媒体数据部分就是经过压缩的多媒体数据,包括视频数据、音频数据、文本数据及其他多媒体数据。
软解和硬解
所谓“软解”就是通过软件让 CPU 进行视频解码处理;而“硬解”是指不依赖于 CPU,通过专用的设备(子卡)单独完成视频解码,现在实现高清硬解不需要额外的子卡,也不需要额外的投入,因为硬解码模块被整合在了 GPU 内部,而目前主流的显卡(包括整合显卡)都能支持硬解码。
分辨率与码率、帧率
物理分辨率, 即手机屏幕能显示的像素数,用 W x H 个像素表示。常见的手机屏幕分辨率为 320x240(QVGA), 随着大屏幕手机的普及, 更高的分辨率也开始出现.
视频文件的分辨率, 这个是指视频画面的实际分辨率, 如, 320x240, 480x272, 640x480 等等。
一般来说,大部分手机的解码芯片不支持超过其屏幕物理分辨率的视频, 部分可以支持超过其屏幕物理分辨率的视频, 此时播放的画面实际是把原视
频缩小的.
码率:一般用多少 kbps(千比特/秒)或者 mbps(兆比特/秒)来表示。 手机解码芯片所支持的码率一般都在 1Mbps 以下.
帧率:(FPS, 帧/秒), 就是视频画面刷新的速度, 作为参考, 国内电视机一般是 25FPS, 电影标准为 24FPS. 手机芯片, 最高支持 30FPS
ffmpeg模块组成
libavformat:用于各种音视频封装格式的生成和解析,包括获取解码所需信息以生成解码上下文结构和读取音视频帧等功能;音视频的格式解析协议,为 libavcodec 分析码流提供独立的音频或视频码流源。
libavcodec:用于各种类型声音/图像编解码;该库是音视频编解码核心,实现了市面上可见的绝大部分解码器的功能,libavcodec 库被其他各大解码器 ffdshow,Mplayer 等所包含或应用。
libavdevice : 硬 件 采 集 、 加 速 、 显 示 。 操 作 计 算 机 中 常 用 的 音 视 频 捕 获 或 输 出 设 备 :ALSA,AUDIO_BEOS,JACK,OSS,1394,VFW。
libavfilter: filter(FileIO、FPS、DrawText)音视频滤波器的开发,如宽高比 裁剪 格式化 非格式化 伸缩。
libavutil:包含一些公共的工具函数的使用库,包括算数运算 字符操作;
libavresample:音视频封转编解码格式预设等。
libswscale:(原始视频格式转换)用于视频场景比例缩放、色彩映射转换;图像颜色空间或格式转换,如 rgb565 rgb888 等与 yuv420 等之间转换。
libswresample:原始音频格式转码
libpostproc:(同步、时间计算的简单算法)用于后期效果处理;音视频应用的后处理,如图像的去块效应。
ffmpeg:该项目提供的一个工具,可用于格式转换、解码或电视卡即时编码等;
ffsever:一个 HTTP 多媒体即时广播串流服务器;
ffplay:是一个简单的播放器,使用 ffmpeg 库解析和解码,通过 SDL 显示;
ffmpeg处理流媒体过程
- 将输入文件解封装demuxer,得到被压缩封装的音/视频流
- 对音/视频进行decoder,得到原始数据流
- 对原始数据流进行处理(即,需要实现的功能)
- 对处理后的原始数据进行encoder封装
- 对压缩封装后的音/视频进行muxer文件封装
ffmpeg基础——基本框架介绍相关推荐
- python框架django文档_Django基础——Django框架介绍及模板语言
Django框架,我们只需要关心二点: 1.根据用户访问不同的路径执行不同的函数 2.从HTML读取出内容,并且完成字符串的替换 而socket通信不需要我们自己写: 新建Django项目 命令行创建 ...
- iOS流媒体直播整个框架介绍(HLS、RTSP)
iOS流媒体直播整个框架介绍(HLS.RTSP) 目录技术文章2016年7月17日 一.HTTP(WebService) 基于HTTP的渐进下载Progressive Download流媒体播放仅是在 ...
- iOS 常用框架介绍
iOS框架介绍 Cocoa Touch GameKit 实现对游戏中心的支持,让用户能够在线共享他们的游戏相关的信息 iOS设备之间蓝牙数据传输 从iOS7开始过期 局域网游戏 ...
- IOS-常用第三方开源框架介绍
iOS开发-常用第三方开源框架介绍(你了解的ios只是冰山一角) 时间:2015-05-06 16:43:34 阅读:533 评论:0 收藏:0 [点我收藏+] ...
- OS开发-常用第三方开源框架介绍
为什么80%的码农都做不了架构师?>>> OS开发-常用第三方开源框架介绍 http://blog.csdn.net/meiwenjie110/article/details/ ...
- 2019年上半年收集到的人工智能开源框架介绍文章
2019年上半年收集到的人工智能开源框架介绍文章 TensorFlow基本使用 TensorFlow.js:让你在浏览器中也能玩转机器学习 人工智能学习框架TensorFlow渐近分析 TensorF ...
- ESFramework网络通信框架介绍之(2)――网络通信消息NetMessage
ESFramework网络通信框架与元数据 较之C++而言,.NET是一个更加"动态"的平台,其动态能力建立在反射机制之上,而反射的基础是"元数据". 上文已经 ...
- dommel mysql_.Net Core AA.FrameWork应用框架介绍
开发多年,一直在从社区获取开源的便利,也深感社区力量的重要性,今天开源一个应用基础框架AA.FrameWork,也算是回馈社区,做出一点点贡献,希望能够帮助类似当年入行的我. AA.FrameWork ...
- Foundation框架介绍
Foundation框架介绍 前言 在开发初期,个人发现开发主要涉及到这几个方面:语言语法使用.UIKit.Foundation, 语言是开发基础,UIkit主要负责用户界面设计,其他最常用的就是Fo ...
最新文章
- 快速排序实现以及时间复杂度分析
- Jan 13 - Bulls and Cows; String; HashSet;
- java 命令行 读取文件_java读取txt文件
- 【读书笔记】《深入浅出Webpack》
- C3P0 释放连接 的问题
- MySQl求奇数和函数_收集的48个Shell脚本小技巧
- FCPX无缝扭曲过渡转场Twirl Transition Pack for Mac
- Java多线程——重入锁ReentrantLock源码阅读
- Python标准库中的zipfile
- 搞了一个迭代发布下SpringBoot Jar瘦身方案,老大给我打了个A+
- hadoop合并日志_Hadoop深入学习:HDFS主要流程——SNN合并fsimage和编辑日志
- 小菜找实习——阿里3.25场笔试第一题(矩阵数组最小差值和)
- 因特尔g41显卡 linux驱动,英特尔g41显卡驱动
- Windows使用choco包管理器
- 建筑业房地产管理系统
- ◎◎首都机场大巴最新路线时刻表◎◎
- matlab不能使用syms,matlab syms什么意思
- 优维助力国内某省级商业银行同城异地灾备自动化建设
- 发起AI联盟,天猫精灵CES布局智能家居市场
- matlab如何表示冲激信号,matlab里如何表示冲激信号
热门文章
- 英国w l 是什么码数_英国广播公司的完整形式是什么?
- PowerDesigner16(PDM)pd生成数据库sql脚本
- 百思不得其解的Failed to allocate a managed memory buffer of 268435456 bytes.错误解决
- SpringBoot JPA(JpaRepository)动态查询 分页展示
- 使用libvirt和qemu将pci pass through设备添加到虚拟机上
- 《矩阵理论》大萌课程笔记 - 特殊矩阵
- oracle IMP-00085: 为无界导出文件指定了多个输入文件
- Linux内核中的算法和数据结构
- HDOJ 2604 Queuing (递推+矩阵快速幂)
- 还在埋头干活?给程序员的几个忠告