ffmpeg学习(一)
来源:互联网 发布:邮箱的正则表达式的js 编辑:程序博客网 时间:2024/06/05 18:37
ffmpeg学习(一)–基础理论知识
- ffmpeg概念
ffmpeg是一套可以用来记录、转换数字音频、视频,并将其转化为流的开源计算机程序。它提供了录制、转换以及流化音视频的完整解决方案。
ffmpeg官网地址为:
http://ffmpeg.org/
- ffmpeg用途
目前ffmpeg用处非常广泛,有许多基于ffmpeg的播放器、转码工具,如:暴风影音,QQ影音,射手播放器、格式工厂等。ffmpeg的视音频编解码功能几乎囊括了显存所有的视音频编码标准,对于做视音频开发的工程师而言,几乎都离不开它。
相关基础理论知识
- 视频播放器原理
视频播放器播放一个互联网上的视频文件,需要经过以下几个步骤:解协议,解封装,解码视音频,视音频同步。如果播放本地文件则不需要解协议,为以下几个步骤:解封装,解码视音频,视音频同步。他们的过程如图所示。
解协议的作用: 将流媒体协议的数据,解析为标准的相应的封装格式数据。视音频在网络上创博的时候,常常采用各种流媒体协议(HTTP、RTMP、RTSP、MMS等)。这些协议在传输视音频数据的同时,也会传输一些信令数据,这些信令数据包括对播放的控制(播放、暂停、停止),或者对网络状态的描述等。解协议的过程中会去除掉信令数据而只保留视音频数据。例如,采用RTMP协议传输的数据,经过解协议操作后,输出FLV格式的数据。
解封装的作用: 将输入的封装格式的数据,分离成为音频流压缩编码数据和视频流亚索编码数据。封装格式种类比较,常见的有:MP4、MKV、RMVB、TS、FLV、AVI等等,它的作用是将亚索编码的视频数据和音频数据按照一定的格式放到一起。
解码的作用: 将压缩编码的音视频数据解码成为非压缩的音视频原始数据。音频的压缩编码标准常见的有AAC、MP3、AC-3等;视频的压缩编码标准包含H.264、MPEG2、VC-1等。解码是整个系统中最重要也是最复杂的一个环节,解码处理不好,通常会导致视频播不出来、或者跳帧、画面有马赛克等等。通过解码,压缩编码的视频数据输出成非压缩的颜色数据,如YUV420P、RGB等;压缩编码的音频数据输出成为非压缩的音频采样数据,如PCM数据。
视音频同步的作用: 根据解封装模块处理过程中获取到的参数信息,同步解码出来的视频和音频数据,并将视频音频数据送至系统的显卡和声卡播放出来。
- 流媒体协议
流媒体协议是服务器与客户端之间通信遵循的规定。当前网络上主要的流媒体协议如下图所示。
- 封装格式
封装格式的主要作用是把视频码流和音频码流按照一定的格式存储在一个文件中。现如今流行的封装格式如下图
- 视频编码
视频编码的主要作用是将视频像素数据(RGB,YUV等)压缩成为视频码流,从而降低视频的数据量。如果视频不经过压缩编码的话,体积通常是非常大的,一部电影可能就要上百G的空间。视频编码是视音频技术中最重要的技术之一。视频码流的数据量占了视音频总数据量的绝大部分。高效率的视频编码在同等的码率下,可以获得更高的视频质量。视频编码格式如下图
- 音频编码
音频编码的主要作用是将音频采样数据(PCM等)压缩成为音频码流,从而降低音频的数据量。音频编码也是互联网视音频技术中一个重要的技术。但是一般情况下音频的数据量要远小于视频的数据量,因而即使使用稍微落后的音频编码标准,而导致音频数据量有所增加,也不会对视音频的总数据量产生太大的影响。高效率的音频编码在同等的码率下,可以获得更高的音。音频主要编码如下图
- ffmpeg学习(一)
- ffmpeg学习(一)
- FFMPEG学习【libavfilter】(一)
- FFMPEG学习【libavdevice】(一)
- FFMpeg学习(一):19 ffmpeg commands for all needs
- ffmpeg和SDL学习笔记(一)
- ffmpeg和SDL学习笔记(一)
- FFMPEG学习【libavcodec】:实用函数(一)
- FFMPEG学习【libavutil】:Memory Management(一)
- FFMPEG学习【libavutil】:数据结构(一)
- FFMPEG学习【libavutil】:音频相关(一)
- ffmpeg和SDL学习笔记(一)
- FFmpeg 学习笔记(一)
- FFmpeg编程学习笔记一
- [ffmpeg]学习(一)Mac上的编译
- ffmpeg学习一:启动篇(学习计划与环境搭建)
- FFMPEG学习【libavcodec】:核心函数以及结构体(一)
- An ffmpeg and SDL Tutorial 学习笔记(一)
- poj2635(素数表)
- 第八周 bfs
- 二分查找
- HDU1005 Number Sequence
- 基于活动选择问题来分析动态规划和贪心算法
- ffmpeg学习(一)
- Swing中Graphics绘制图片,图片使用随机背景色,随机字符串
- 开发JPA环境搭建
- static关键字
- Path Sum
- 伸缩布局案例-携程
- CentOS Linux解决Device eth0 does not seem to be present
- Task Schedule HDU
- Turtle 库绘制一棵西兰花