您的位置:首页 > 其它

ffmpeg源码分析及录制/压缩/上传视频等

2017-10-30 23:54 1531 查看
ffmpeg源码分析及录制/压缩/上传视频等,了解ffmpeg如何处理视频?

 > FFmpeg用于音视频的编解码、混流、解复用、过滤器、转码以及播放等。值得注意的是,FFMpeg并不是直接就可以用于各种视频的编解码工作,它只是一个框架。真正执行编解码工作的通常会用到其它编解码器。比如进行h264的编码,一般会选择FFMpeg配合x264进行使用。

  FFmpeg其工具有:

1.ffmpeg:一个用于多媒体格式转换、解码或电视卡即时编码等的命令行工具

2.ffserver: 一个用于现场直播的多媒体流服务器或 HTTP 多媒体即时广播串流服务器

3.ffplay: 一个基于SDL和FFMpeg库的简单的媒体播放器;是一个简单的播放器,使用ffmpeg 库解析和解码,通过SDL显示;

4.ffprobe:一个简单的多媒体分析工具

ffmpeg有以下几个核心库,各个包的作用:

   1.libavformat:媒体格式,用于各种音视频封装格式的生成和解析及所支持的协议,包括获取解码所需信息以生成解码上下文结构和读取音视频帧等功能;包含多媒体容器格式的解码器和多路复用器的库。

   2.libavcodec:用于各种类型视频/声音/图像编解码;更加全面的编解码实现的合集

   3.libavutil:包含一些公共的工具函数;核心工具;包含简化编程功能的库,包括随机数生成器、数据结构、数学相关的程序、核心多媒体框架等等。

   4.libswscale:用于视频场景比例缩放、色彩映射转换;执行高度优化的图像缩放和色彩空间/像素格式转换的库。

   5.libpostproc:用于后期效果处理;多媒体后处理器

   6. libavdevice:提供支持众多设备数据的输入与输出,如读取摄像头数据、屏幕录制,视频采集访问摄像头等;用于从许多常见的多媒体输入输出软件框架中获取和渲染,包括Video4Linux、Video4Linux2、VfW和ALSA。

   7.libavfilter:后处理,提供音视频的过滤器,如视频加水印、音频变声等,用做滤镜处理

   8.libswresample:提供对视频图像进行色彩转换、缩放以及像素格式转换,如图像的YUV转换,用于重采样;执行高度优化的音频重采样、再分频和采样格式转换操作的库。

   9.libavresample:提供音频的重采样工具

视音频技术主要包含以下几点:封装技术,视频压缩编码技术以及音频压缩编码技术。如果考虑到网络传输的话,还包括流媒体协议技术。

点播服务普遍采用了HTTP作为流媒体协议,H.264作为视频编码格式,AAC作为音频编码格式。

ffmpeg源码整体分析- http://download.csdn.net/download/xin_hua_3/6247113
ffmpeg中主要分有三个主要用途用于媒体流的解码播放,媒体流的转换(解码之后再编码)和媒体流录制。

在ffmpeg中媒体流的解码播放流程:

  其主要流程为从媒体文件中读取出媒体流,然后送入媒体格式解码器(demuxer)中去除多余的外衣--媒体格式。然后送入ffmpeg的codec的decode中进行解码,最终生成显示需要的YUV格式的图片,然后再送入类似SDL中进行渲染。ffmpeg中媒体流的解码播放流程相对比较来说其最大的难点在于PTS的同步,在ffmpeg的ffplay中有很好的例子。

  媒体流的录制过程相当于媒体流转换的后半部分流程从YUV文件到media文件。

ffplay播放器七个模块按广度顺序:读文件模块(source filter),解复用模块(Demux filter),视/音频解码模块(Decode filter),颜色空间转换模块(Color Space converter filter),视频/音频播放模块(Render filter)。

FFmpeg是一个全球领先的多媒体框架,能够友好的在大部分设备实现解码、编码、转码、复用、解复用、流媒体、过滤和播放。FFmpeg能够在各个平台(Linux、Mac OS X、Microsoft Windows、BSDs、Solaris等)和架构(x86、arm、mips等)中运行和编译。

FFmpeg简单介绍- http://blog.csdn.net/momo0853/article/details/49427935
[总结]FFMPEG视音频编解码零基础学习方法- http://blog.csdn.net/leixiaohua1020/article/details/15811977
最简单的基于FFmpeg的AVfilter例子(水印叠加)- http://blog.csdn.net/leixiaohua1020/article/details/29368911
FFmpeg源代码结构图 - 解码- http://blog.csdn.net/leixiaohua1020/article/details/44220151
100行代码实现最简单的基于FFMPEG+SDL的视频播放器(SDL1.x)- http://blog.csdn.net/leixiaohua1020/article/details/8652605
[总结]视音频编解码技术零基础学习方法-http://blog.csdn.net/leixiaohua1020/article/details/18893769

视音频数据处理入门:RGB、YUV像素数据处理- http://blog.csdn.net/leixiaohua1020/article/details/50534150
视音频数据处理入门:PCM音频采样数据处理- http://blog.csdn.net/leixiaohua1020/article/details/50534316
视音频数据处理入门:H.264视频码流解析- http://blog.csdn.net/leixiaohua1020/article/details/50534369
视音频数据处理入门:AAC音频码流解析-http://blog.csdn.net/leixiaohua1020/article/details/50535042

视音频数据处理入门:FLV封装格式解析- http://blog.csdn.net/leixiaohua1020/article/details/50535082
视音频数据处理入门:UDP-RTP协议解析- http://blog.csdn.net/leixiaohua1020/article/details/50535230
《现代电视原理》《数字电视广播原理与应用》(本科的课本)中的部分章节
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: