FFmpeg基础库编程开发学习笔记——视频常见格式

声明一下:这些关于ffmpeg的文章仅仅是用于记录我的学习历程和以便于以后查阅,文章中的一些文字可能是直接摘自于其它文章、书籍或者文献,学习ffmpeg相关知识是为了使用在Android上,我也才是刚開始接触学习,如有不正确之处还请指出。



视频格式能够分为适合本地播放的本地影像视频和适合在网络中播放的网络流媒体影像视频两大类。虽然后者在播放的稳定性和播放画面质量上可能没有前者优秀。但网络流媒体影像视频的广泛传播性使之正被广泛应用于视频点播、网络演示、远程教育、网络视频广告等等互联网信息服务领域。
注:原始的视频数据能够理解为通过摄像头等驱动获取的没有经过编码的数据,市面上usb摄像头输出格式常见的有:RGB24、YUV2、YV2(这些都是没有编码的原始数据)。MJPEG(经过编码的数据)。摄像头捕捉的数据也是能够设置的,比方Windows下用cap来设置。

视频常见格式:MPEG/MPG/DAT(曾经老是看到DAT。如今才知道这类文件竟然是视频文件)、AVI、ASF、WMV、NAVI、3GP、REAL VIDEO、MKV、FLV、F4V、RMVB、WebM.
1、MPEG/MPG/DAT
MPEG(运动图像专家组)是Motion Picture Experts Group的缩写,这类格式包含了MPEG-1。MPEG-2和MPEG-4在内的多种视频格式。MPEG-1被广泛的应用在VCD的制作和一些视频片段下载的网络应用上面。MPEG-2则是应用在DVD的制作上。

MPEG2的图像质量是MPEG1无法比拟的。

MPEG系列标准已成为国际上影响最大的多媒体技术标准。当中MPEG1和MPEG2是採用同样原理为基础的预測编码、变换编码、熵编码及运动补偿等第一代数据压缩编码技术;MPEG4(ISO/IEC 14496)则是基于第二代压缩编码技术制定的国际标准,它以视听媒体对象为基本单元。採用基于内容的压缩编码。以实现数字视音频、图形合成应用及交互式多媒体的集成。

注意:这里须要注意的是不要把MPEG-4当成 MP4。MPEG-4是编码方式,而MP4是文件的扩展名。用MPEG-4的编码方式能够编出MP4格式(扩展名)的文件。也可编出3GP、RMVB、RM等格式。一个MP4格式的文件能够由MPEG-4的编码方式编出,也可由MPEG-1、MPEG-2、H.263等编出。
2  、AVI
AVI,音频视频交错(Audio Video Interleaved)的英文缩写。

AVI格式调用方便、图像质量好。压缩标准可随意选择,是应用最广泛、也是应用时间最长的格式之中的一个。

3、ASF
ASF(Advanced Streaming format 高级流格式)。ASF是一种能够直接在网上观看视频节目的文件压缩格式。ASF使用了MPEG4的压缩算法。压缩率和图像的质量都非常不错。由于ASF是以一个能够在网上即时观看的视频“流”格式存在的,所以它的图像质量比VCD差一点点并不出奇,但比同是视频“流”格式的RAM格式要好。
4、WMV
一种独立于编码方式的在Intent上实时传播多媒体的技术标准。
5、NAVI
NAVI是一种去掉视频流特性的改良型ASF格式。

(视频格式追求的无非是压缩率和图像质量)。

6、3GP
3GP是一种3G流媒体的视频编码格式,主要是为了配合3G网络的高传输速度而开发的,也是眼下手机中最为常见的一种视频格式。眼下大部分支持视频拍摄的手机都支持3GP格式的视频播放,其特点是网速占用较少,但画质较差。

7、REAL VIDEO
REAL VIDEO(RA、RAM)格式由一開始就是定位在视频流应用方面的,也能够说是视频流技术的始创者。

它能够在用56K MODEM拨号上网的条件实现不间断的视频播放,当然,其图像质量和MPEG2、DIVX等比是不敢恭维的。

8、MKV
一种后缀为MKV的视频文件频频出如今网络上,它可在一个文件里集成多条不同类型的音轨和字幕轨。

9、FLV
FLV是FLASH VIDEO的简称,FLV流媒体格式是一种新的视频格式。因为它形成的文件极小、载入速度极快,使得网络观看视频文件成为可能。

10、F4V
作为一种更小更清晰,更利于在网络传播的格式,F4V已经逐渐代替了传统FLV,也已经被大多数主流播放器兼容播放 ,而不须要通过转换等复杂的方式。F4V是Adobe公司为了迎接高清时代而推出继FLV格式后的支持H.264的F4V流媒体格式。F4V与FLV的主要差别在于。FLV格式採用的是H263编码。而F4V则支持H.264编码的高清晰视频。码率最高可达50Mbps。

另外。非常多主流媒体站点上下载的F4V文件后缀却为FLV,这是F4V格式的还有一个特点,属正常现象。观看时可明显感觉到这样的实为F4V的FLV有明显更高的清晰度和流畅度。

11、RMVB
RMVB的前身为RM格式,它们是Real NetWorks公司所制定的音频视频压缩规范。依据不同的网络传输速率而制定出不同的压缩比率。从而实如今低速率的网络上进行影像数据实时传送和播放。具有体积小。画质也还不错的长处。RMVB的诞生,打破了原先RM格式那种平均压缩採样的方式。在保证平均压缩比的基础上,採用浮动比特率编码的方式,将较高的比特率用于复杂的动态画面(如歌舞、飞车、战争等),而在静态画面中则灵活地转为较低的採样率,从而合理地利用了比特率资源,使RMVB最大限度地压缩了影片的大小。终于拥有了近乎完美的接近于DVD品质的视听效果。
12、WebM
WebM是由Google提出的一个开放、免费的媒体文件格式。WebM影片格式事实上是以Matroka(即MKV)容器格式为基础开发的新容器格式,里面包含了VP8影片轨和Ogg Vorbis音轨。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目录 第一章 多媒体概念介绍 6 1.1视频格式 6 1.1.1常见格式 6 1.2音频格式 9 1.2.1常见格式 9 1.2.2比较 15 1.3字幕格式 15 1.3.1外挂字幕与内嵌字幕的阐述 15 1.3.2外挂字幕视频与内嵌字幕视频的画面比较 15 1.3.3外挂字幕的三种格式 15 1.4采集录制和播放渲染 16 1.4.1视频采集 16 1. 4.2视频录制 17 1.4.3视频渲染 17 1.5编解码器 18 1.6容器和协议 19 1.6.1容器格式和编码格式 19 1.6.2协议 26 1.6.2.1 视频协议 26 1.6.2.2 音频协议. 26 1.6.2.3 上层通讯协议 27 1.7常用概念介绍 27 1.7.1硬解 27 1.7.2 IBP帧 28 1.7.3 DTS和PTS 31 1.7.4 分辨率 31 1.7.5 码率 32 1.7.6 帧率 32 1.7.7 RGB和YUV 32 1.7.8 实时和非实时 32 1.7.9 复合视频和s-video 32 1.7.10 硬件加速 32 1.7.11 FFmpeg Device 32 第二章 FFmpeg框架 34 2.1 FFmpeg概述 34 2.1.1简介 34 2.1.2功能 34 2.1.3模块组成 35 2.1.4命令集 35 2.2 媒体播放器三大底层框架 37 第三章 编译及简单应用 41 3.1 FFmpeg编译和入门介绍 41 41 3.2 流媒体数据流程讲解 49 3.3 简单应用 51 3.4 SDL( Simple Direct Layer) 55 3.4.1 SDL显示视频 55 3.4.2 SDL显示音频 55 3.5 ffmpeg程序的使用(ffmpeg.exe,ffplay.exe,ffprobe.exe) 56 3.5.1 ffmpeg.exe 56 3.5.2 ffplay.exe 56 3.5.3 ffprobe.exe 56 第四章 数据结构 57 4.1 AVCodec结构体 59 4.2 AVCodecContext结构体 59 4.3 AVInputFormat结构体 60 4.4 AVFormatContext结构体 61 4.5 MovContext结构体 62 4.6 URLProtocol结构体 62 4.7 URLContext结构体 63 4.8 AVIOContext结构体(老版本为:ByteIOContext) 63 4.9 AVStream结构体 64 4.10 MOVStreamContext 结构体 65 4.11 AVPacket 结构体 66 4.12 AVPacketList 结构体 67 4.13 AVFrame结构体 67 第五章 重要模块 76 5.1 libavutil公共模块 76 1 文件列表 76 2 common.h 文件 76 3 bswap.h 文件 78 4 rational.h 文件 79 5 mathematics.h 文件 80 6 avutil.h 文件 80 5.2 libavcodec编解码模块 82 1 文件列表 82 2 avcodec.h 文件 82 3 allcodec.c 文件 87 4 dsputil.h 文件 87 5 dsputil.c 文件 88 6 utils_codec.c 文件 88 7 imgconvert_template.h 文件 99 8 imgconvert.c 文件 121 9 msrle.c 文件 164 10 turespeech_data.h 文件 171 11 turespeech.c 文件 174 5.3 libavformat容器模块 184 1 文件列表 184 2 avformat.h 文件 184 3 allformat.c 文件 190 4 cutils.c 文件 190 5 file.c 文件 192 6 avio.h 文件 194 7 avio.c 文件 196 8 aviobuf.c 文件 200 9 utils_format.c 文件 209 10 avidec.c 文件 220 5.4 libswscale视频色彩空间转换 243 5.5 libswresample音频重采样 243 5.6 libavfilter音视频滤器 243 5.7 libavdevice设备输入和输出容器 243 5.8 libpostproc视频后期处理 243 第六章 播放器 243 6.1 视频播放器 243 6.1.1 ffmpeg的配置 243 6.1.2 一个简单的视频播放器 244 6.2 音频播放器 247 6.3 一个完整的播放器--ffplay 253 6.3.1 ffplay流程图 253 6.3.2 ffplay源码剖析 254 第七章 应用开发 275 7.1 ffmpeg的使用:编码 275 第八章 关键函数介绍 280 8.1 avformat_open_input 280 8.2 avcodec_register_all() 281 8.3 av_read_frame() 283 8.4 avcodec_decode_video2() 283 8.5 transcode_init() 283 8.6 transcode() 294 第九章 ffmpeg相关工程 301 9.1 ffdshow 301 ffdshow 源代码分析1 : 整体结构 302 ffdshow 源代码分析 2: 位图覆盖滤镜(对话框部分Dialog) 304 ffdshow 源代码分析 3: 位图覆盖滤镜(设置部分Settings) 312 ffdshow 源代码分析 4: 位图覆盖滤镜(滤镜部分Filter) 317 ffdshow 源代码分析 5: 位图覆盖滤镜(总结) 322 ffdshow 源代码分析 6: 对解码器的dll的封装(libavcodec) 322 ffdshow 源代码分析 8: 视频解码器类(TvideoCodecDec) 344 ffdshow 源代码分析 9: 编解码器有关类的总结 352 9.2 LAV filters 357 LAV Filter 源代码分析 1: 总体结构 357 LAV Filter 源代码分析 2: LAV Splitter 358 LAV Filter 源代码分析 3: LAV Video (1) 382 LAV Filter 源代码分析 4: LAV Video (2) 400 9.3 MPlayer 427 9.3.1 Mplayer支持格式 427 9.3.2 Mplayer 中头文件的功能分析 427 9.3.3 MPlayer.main 主流程简要说明 428 9.3.4 Mplayer源码分析 429 第十章 开发实例 436 第十一章 mp4文件封装协议分析 436 11.1 概述 436 11.2 mp4的物理结构 436 11.3 数据的组织结构 437 11.4 mp4的时间结构 437 11.5 文件结构分析 438 11.5.1 File Type Box(ftyp) 438 11.5.2 Movie Box(moov) 438 第十二章 flv 文件格式分析 457 12.1 概述 457 12.2 文件总体结构 457 12.3 文件结构分析 458 12.3.1 flv文件头的结构 458 12.3.2 body主体结构 459 附录A:常见问题 465 1 ffmpeg 从内存中读取数据 465 2 MFC中使用SDL播放音频没有声音的解决方法 465 附录B:经典代码示例 466 附录C:ffmpeg参数中文详细解释 477 附录D:ffplay的快捷键以及选项 479 附录E: ffmpeg处理rtmp流媒体 481
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值