ffmpeg应用基础-2
来源:互联网 发布:淘宝免费推广的方法 编辑:程序博客网 时间:2024/05/01 12:31
ffmpeg是一个
**- 集录制、
- 转换、
- 音/视频编码解码**
等功能为一体的完整的开源解决方案。
特别是其下面的功能领先的编解码库libavcodec,集成了音视频应用中绝大部分的CODEC功能,同时其他著名的编解码器也基于或参考了libavcodec库。
1.ffmpeg概述
H264.c就是一个能正确、流畅解码x264码流的H.264视频解码器。
ffmpeg的框架是以函数指针的方式,形成开放的公共接口,用户能够添加自己的CODEC,而构成标准的音视频开发应用。
由于ffmpeg本身为开源工程,没有较为详细的开发文档。需要用户以C语言的分析能力逐步掌握其框架结构,提取自己特定功能的模块或函数。
H264.c以及其他有关文件完成H.264视频的解码,这里就以提取的H264.c视频解码例程说明H.264的解码流程。H264.c本身实现了多媒体扩展指令的汇编优化,能高效的进行视频解码。
ffmpeg的主页http://ffmpeg.org提供了各种相关文档以及最新源代
码下载,使用Git或SVN等代码管理软件获取最新代码工程。
有很多不同版本的ffmpeg开发版本,你也可以自己创建一个~~~
ffmpeg官网下载:
https://ffmpeg.org/download.html
VLC的开发提交:
http://git.videolan.org/?p=ffmpeg.git;a=summary
VLC的其他资源:
http://git.videolan.org/
fmpeg-3.0.2目录主要有以下几个工程库目录:
● libavcodec:该库是音视频编码或解码的核心代码,实现了市面上可见的绝大部分解码器的功能,libavcodec库被其他各大解码器ffdshow、Mplayer等所包含或应用。本章所采用的H.264解码器就是抽取其中的H264.c等文件。
● libavdevice:操作计算机中常用的音视频捕获或输出设备:ALSA、AUDIO_BEOS 、JACK、OSS、1394、VFW等。
● libavfilter:音视频滤波器的开发有,宽高比、裁剪、格式化、非格式化、伸缩等。
● libavformat:音视频流的格式解析,为libavcodec分析码流提供独立的音频或视频码流源。
● libavutil:ffmpeg实用工具库,包括算术运算、字符操作等。
● libpostproc:音视频应用的后处理,如图像的去块效应。
● libswscale:图像颜色空间或格式转换,如RGB的24、32等与YUV的420、IYUV、YUY2等之间转换。
2.H.264解码原理
H.264根据其码流的健壮性或语义,分为视频编码层VCL(Video Coding Layer)和网络抽象层NAL(Network Abstract Layer)。
VCL是H.264的压缩核心,包括码流的语义以及块、宏块和片的语法定义,其目标是尽可能地独立于网络进行高效地视频编码;
NAL是将VCL产生的比特流打包,以适应不同鲁棒能力的网络信道,NAL
覆盖了所有片Slice级别以上的语法定义,并且同时支持独立片解码、起始码唯一性保证、补充增强信息SEI和流格式数据的传送。总的来说,NAL解码器负责将H.264码流进行解码,完成图像重构。
下图展示了解码器的总框图。
图 H.264解码器框图
从图中可以看出,解码的基本流程为:将NAL数据位流输入到H.264解码器中,熵解码模块解码后输出量化系数X;系数经过反量化和反变换得到残差数据R;解码器使用从码流中解码的头信息生成预测块Pred,然后Pred与残差R求和得到块数据dF;每个块dF通过去除块效应的滤波得到解码图像的重建块F。根据H.264视频编码过程,H.264解码器的工作包含在编码算法中。
- ffmpeg应用基础-2
- ffmpeg应用
- ffmpeg基础
- ffmpeg 基础
- FFmpeg基础
- ffmpeg基础
- 【FFMpeg视频开发与应用基础】五、调用FFMpeg SDK封装音频和视频为视频文件
- 【FFMpeg视频开发与应用基础】二、调用FFmpeg SDK对YUV视频序列进行编码
- 【FFMpeg视频开发与应用基础】六、调用FFMpeg SDK实现视频文件的转封装
- 【FFMpeg视频开发与应用基础】七、 调用FFMpeg SDK实现视频水印
- 【FFMpeg视频开发与应用基础】八、 调用FFMpeg SDK实现视频缩放
- 【FFMpeg视频开发与应用基础】一、使用FFmpeg命令行工具和批处理脚本进行简单的音视频文件编辑
- 【FFMpeg视频开发与应用基础】三、调用FFmpeg SDK对H.264格式的视频压缩码流进行解码
- FFmpeg 0.4.9应用
- Ffmpeg快速应用开发
- ffmpeg的简单应用
- Ffmpeg快速应用开发
- ffmpeg快速应用开发
- 什么是软件需求?什么是功能需求?
- 堆优化 Dijstra单源最短路径算法 2(邻接表)
- 什么是软件设计模式?
- 第八周项目一(3) 数组作数据成员(多文件)
- 如何去调用res中的资源
- ffmpeg应用基础-2
- 【OpenStack】OpenStack原理(一)——OpenStack发展及架构
- 第五周项目一(2)-三角形类雏形
- swift2.0 异步post请求
- 初试Visual Studio Code配置Python开发环境
- Android 在其他线程中更新UI线程的解决方法
- 10 Maven-使用NEXUS创建私服
- TCP/IP复习总结
- A 偷吃糖果 南京理工大学第八届程序设计大赛(校外镜像)