ffmpeg基础库编程开发》20140307
更新时间:2023-06-10 07:06:01 阅读量: 实用文档 文档下载
ffmpeg 编程指南
《FFmpeg 基础库编程开发》----czc1009
ffmpeg 编程指南
目录
第一章 多媒体概念介绍 .......................................................................................................................................................... 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
ffmpeg 编程指南
第三章 编译及简单应用 ........................................................................................................................................................ 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
ffmpeg 编程指南
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
ffmpeg 编程指南
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:常见问题 ................................................................................................................................................................ 464
1 ffmpeg 从内存中读取数据 ........................................................................................................................................ 464 2 MFC中使用SDL播放音频没有声音的解决方法 .................................................................................................. 464 附录B:经典代码示例 ........................................................................................................................................................ 465 附录c:ffmpeg参数中文详细解释 ..................................................................................................................................... 476 附录D:ffplay的快捷键以及选项 ...................................................................................................................................... 478 附录E: ffmpeg处理rtmp流媒体 ..................................................................................................................................... 480
ffmpeg 编程指南
第一章 多媒体概念介绍
1.1视频格式
视频格式可以分为适合本地播放的本地影像视频和适合在网络中播放的网络流媒体影像视频两大类。尽管后者在播放的稳定性和播放画面质量上可能没有前者优秀,但网络流媒体影像视频的广泛传播性使之正被广泛应用于视频点播、网络演示、远程教育、网络视频广告等等互联网信息服务领域。
注:原始的视频数据可以理解为通过摄像头等驱动获取的没有经过编码的数据,市面上usb摄像头输出格式常见的有:RGB24、YUV2、YV2(这些都是没有编码的原始数据),MJPEG(经过编码的数据)。摄像头捕捉的数据也是可以设置的,比如windows下用cap来设置。
1.1.1常见格式
MPEG/MPG/DAT
MPEG(运动图像专家组)是Motion Picture Experts Group 的缩写。这类格式包括了MPEG-1,MPEG-2和MPEG-4在内的多种视频格式。MPEG-1相信是大家接触得最多的了,因为其正在被广泛地应用在VCD 的制作和一些视频片段下载的网络应用上面,大部分的VCD都是用MPEG1 格式压缩的( 刻录软件自动将MPEG1转换为DAT格式 ) ,使用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
ffmpeg 编程指南
AVI,音频视频交错(Audio Video Interleaved)的英文缩写。AVI这个由微软公司发表的视频格式,在视频领域可以说是最悠久的格式之一。AVI格式调用方便、图像质量好,压缩标准可任意选择,是应用最广泛、也是应用时间最长的格式之一。
MOV
使用过Mac机的朋友应该多少接触过QuickTime。QuickTime原本是Apple公司用于Mac计算机上的一种图像视频处理软件。Quick-Time提供了两种标准图像和数字视频格式, 即可以支持静态的*.PIC和*.JPG图像格式,动态的基于Indeo压缩法的*.MOV和基于MPEG压缩法的*.MPG视频格式。
ASF
ASF(Advanced Streaming format高级流格式)。ASF 是MICROSOFT 为了和的Real player 竞争而发展出来的一种可以直接在网上观看视频节目的文件压缩格式。ASF使用了MPEG4 的压缩算法,压缩率和图像的质量都很不错。因为ASF 是以一个可以在网上即时观赏的视频“流”格式存在的,所以它的图像质量比VCD 差一点点并不出奇,但比同是视频“流”格式的RAM 格式要好。
WMV
一种独立于编码方式的在Internet上实时传播多媒体的技术标准,Microsoft公司希望用其取代QuickTime之类的技术标准以及WAV、AVI之类的文件扩展名。WMV的主要优点在于:可扩充的媒体类型、本地或网络回放、可伸缩的媒体类型、流的优先级化、多语言支持、扩展性等。
NAVI
如果发现原来的播放软件突然打不开此类格式的AVI文件,那你就要考虑是不是碰到了n AVI。n AVI是New AVI 的缩写,是一个名为Shadow Realm 的地下组织发展起来的一种新视频格式。它是由Microsoft ASF 压缩算法的修改而来的(并不是想象中的AVI),视频格式追求的无非是压缩率和图像质量,所以 NAVI 为了追求这个目标,改善了原始的ASF 格式的一些不足,让NAVI 可以拥有更高的帧率。可以这样说,NAVI 是一种去掉视频流特性的改良型ASF 格式。
3GP
3GP是一种3G流媒体的视频编码格式,主要是为了配合3G网络的高传输速度而开发的,也是目前手机中最为常见的一种视频格式。
简单的说,该格式是“第三代合作伙伴项目”(3GPP)制定的一种多媒体标准,使用户能使用手机享受高质量的视频、音频等多媒体内容。其核心由包括高级音频编码(AAC)、自适应多速率 (AMR) 和MPEG-4 和H.263视频编码解码器等组成,目前大部分支持视频拍摄的手机都支持3GPP格式的视频播放。其特点是网速占用较少,但画质较差。 REAL VIDEO
REAL VIDEO(RA、RAM)格式由一开始就是定位在视频流应用方面的,也可以说是视频流技术的始创者。它可以在用56K MODEM 拨号上网的条件实现不间断的视频播放,当然,其图像质量和MPEG2、DIVX等比是不敢恭维的啦。毕竟要实现在网上传输不间断的视频是需要很大的频宽的,这方面是ASF的有力竞争者。
MKV
一种后缀为MKV的视频文件频频出现在网络上,它可在一个文件中集成多条不同类型的音轨和字幕轨,而且其视频编码的自由度也非常大,可以是常见的DivX、XviD、3IVX,甚至可以是RealVideo、QuickTime、WMV 这类流式视频。实际上,它是一种全称为Matroska的新型多媒体封装格式,这种先进的、开放的封装格式已经给我们展示出非常好的应用前景。
FLV
FLV是FLASH VIDEO的简称,FLV流媒体格式是一种新的视频格式。由于它形成的文件极小、加载速度极快,使得网络观看视频文件成为可能,它的出现有效地解决了视频文件导入Flash后,使导出的SWF文件体积庞大,不能在网络上很好的使用等缺点。
F4V
ffmpeg 编程指南
作为一种更小更清晰,更利于在网络传播的格式,F4V已经逐渐取代了传统FLV,也已经被大多数主流播放器兼容播放,而不需要通过转换等复杂的方式。F4V是Adobe公司为了迎接高清时代而推出继FLV格式后的支持H.264的F4V流媒体格式。它和FLV主要的区别在于,FLV格式采用的是H263编码,而F4V则支持H.264编码的高清晰视频,码率最高可达50Mbps。也就是说F4V和FLV在同等体积的前提下,能够实现更高的分辨率,并支持更高比特率,就是我们所说的更清晰更流畅。另外,很多主流媒体网站上下载的F4V文件后缀却为FLV,这是F4V格式的另一个特点,属正常现象,观看时可明显感觉到这种实为F4V的FLV有明显更高的清晰度和流畅度。 RMVB
RMVB的前身为RM格式,它们是Real Networks公司所制定的音频视频压缩规范,根据不同的网络传输速率,而制定出不同的压缩比率,从而实现在低速率的网络上进行影像数据实时传送和播放,具有体积小,画质也还不错的优点。
早期的RM格式为了能够实现在有限带宽的情况下,进行视频在线播放而被研发出来,并一度红遍整个互联网。而为了实现更优化的体积与画面质量,Real Networks公司不久又在RM的基础上,推出了可变比特率编码的RMVB格式。RMVB的诞生,打破了原先RM格式那种平均压缩采样的方式,在保证平均压缩比的基础上,采用浮动比特率编码的方式,将较高的比特率用于复杂的动态画面(如歌舞、飞车、战争等),而在静态画面中则灵活地转为较低的采样率,从而合理地利用了比特率资源,使RMVB最大限度地压缩了影片的大小,最终拥有了近乎完美的接近于DVD品质的视听效果。我们可以做个简单对比,一般而言一部120分钟的dvd体积为4GB,而rmvb格式来压缩,仅400MB左右,而且清晰度流畅度并不比原DVD差太远。
人们为了缩短视频文件在网络进行传播的下载时间,为了节约用户电脑硬盘宝贵的空间容量,已越来越多的视频被压制成了RMVB格式,并广为流传。到如今,可能每一位电脑使用者(或许就包括正在阅读这篇文章的您)电脑中的视频文件,超过80%都会是RMVB格式。
RMVB由于本身的优势,成为目前PC中最广泛存在的视频格式,但在MP4播放器中,RMVB格式却长期得不到重视。MP4发展的整整七个年头里,虽然早就可以做到完美支持AVI格式,但却久久未有能够完全兼容RMVB格式的机型诞生。对于MP4,尤其是容量小价格便宜的闪存MP4而言,怎样的视频格式才将会是其未来的主流呢?我们不妨来探讨一番。
WebM
由Google提出,是一个开放、免费的媒体文件格式。WebM 影片格式其实是以 Matroska(即 MKV)容器格式为基础开发的新容器格式,里面包括了 VP8 影片轨和 Ogg Vorbis 音轨,其中Google将其拥有的VP8视频编码技术以类似BSD授权开源,Ogg Vorbis 本来就是开放格式。 WebM标准的网络视频更加偏向于开源并且是基于HTML5标准的,WebM 项目旨在为对每个人都开放的网络开发高质量、开放的视频格式,其重点是解决视频服务这一核心的网络用户体验。Google 说 WebM 的格式相当有效率,应该可以在 netbook、tablet、手持式装置等上面顺畅地使用。
Ogg Vorbis 本来就是开放格式,大家应该都知道,至于 VP8 则是 Google 当年买下一间叫 On2 的公司的时候,取得的 Video Codec, Google 也把这个 Codec 以类似 BSD 授权放出来,因此 WebM 应该是不会有 H.264 的那些潜在的专利问题。
Youtube 也会支持 WebM 的播放。来自产业界的有 Adobe -- Flash Player 将会支持 WebM 格式的播放 -- AMD、ARM、Broadcom、Freescale、NVIDIA、Qualcomm、TI 等。谁不在上头?Intel。在 Browser 方面,Chrome 不要说,Firefox、Opera 都已经表态将会支持这个新格式。微软IE9 的支持就没这么直接,出厂时仅会支持 H.264 影片的播放,但如果你另外下载并安装了 VP8,那当然你也可以播放 HTML / VP8 的影片。 要推动一个新格式进入主流,甚至成为龙头老大,是非常不容易的。但 WebM 和 VP8 的推动者是 Google,而且是在 H.264 正因为其非开放性而备受质疑的时候,或许 WebM 真有机会迅速地站稳脚跟,一举成为新一代的影片通用格式呢!
ffmpeg 编程指南
1.2音频格式
音频格式是指要在计算机内播放或是处理音频文件,也就是要对声音文件进行数、模转换,这个过程同样由采样和量化构成,人耳所能听到的声音,最低的频率是从20Hz起一直到最高频率20KHZ,20KHz以上人耳是听不到的,因此音频文件格式的最大带宽是20KHZ,故而采样速率需要介于40~50KHZ之间,而且对每个样本需要更多的量化比特数。音频数字化的标准是每个样本16位-96dB的信噪比,采用线性脉冲编码调制PCM,每一量化步长都具有相等的长度。在音频文件的制作中,正是采用这一标准。
1.2.1常见格式
常见的音频格式有:CD格式、WAVE(*.WAV)、AIFF、AU、MP3、MIDI、WMA、RealAudio、VQF、OggVorbis、AAC、APE。
CD
CD格式的音质是比较高的音频格式。因此要讲音频格式,CD自然是打头阵的先锋。在大多数播放软件的“打开文件类型”中,都可以看到*.cda格式,这就是CD音轨了。标准CD格式也就是44.1K的采样频率,速率88K/秒,16位量化位数,因为CD音轨可以说是近似无损的,因此它的声音基本上是忠于原声的,因此如果你是一个音响发烧友的话,CD是你的首选。它会让你感受到天籁之音。CD光盘可以在CD唱机中播放,也能用电脑里的各种播放软件来重放。一个CD音频文件是一个*.cda文件,这只是一个索引信息,并不是真正的包含声音信息,所以不论CD音乐的长短,在电脑上看到的“*.cda文件”都是44字节长。注意:不能直接的复制CD格式的*.cda文件到硬盘上播放,需要使用象EAC这样的抓音轨软件把CD格式的文件转换成WAV,这个转换过程如果光盘驱动器质量过关而且EAC的参数设置得当的话,可以说是基本上无损抓音频。推荐大家使用这种方法。
WAVE
ffmpeg 编程指南
WAVE(*.WAV)是微软公司开发的一种声音文件格式,它符合PIFFResource Interchange File Format 文件规范,用于保存WINDOWS平台的音频信息资源,被WINDOWS平台及其应用程序所支持。“*.WAV”格式支持
MSADPCM、CCITT A LAW等多种压缩算法,支持多种音频位数、采样频率和声道,标准格式的WAV文件和CD格式一样,也是44.1K的采样频率,速率88K/秒,16位量化位数,看到了吧,WAV格式的声音文件质量和CD相差无几,也是目前PC机上广为流行的声音文件格式,几乎所有的音频编辑软件都“认识”WAV格式。
AIFF
AIFF(Audio Interchange File Format)格式和AU格式,它们都和WAV非常相像,在大多数的音频编辑软件中也都支持它们这几种常见的音乐格式。
AIFF是音频交换文件格式的英文缩写。是APPLE公司开发的一种音频文件格式,被MACINTOSH平台及其应用程序所支持,NETSCAPE浏览器中LIVEAUDIO也支持AIFF格式。所以大家都不常见。AIFF是Apple苹果电脑上面的标准音频格式,属于QuickTime技术的一部分。这一格式的特点就是格式本身与数据的意义无关,因此受到了Microsoft的青睐,并据此搞出来WAV格式。AIFF虽然是一种很优秀的文件格式,但由于它是苹果电脑上的格式,因此在PC平台上并没有得到很大的流行。不过由于Apple电脑多用于多媒体制作出版行业,因此几乎所有的音频编辑软件和播放软件都或多或少地支持AIFF格式。只要苹果电脑还在,AIFF就始终还占有一席之地。由于AIFF的包容特性,所以它支持许多压缩技术。
AU
AUDIO文件是SUN公司推出的一种数字音频格式。AU文件原先是UNIX操作系统下的数字声音文件。由于
ffmpeg 编程指南
早期INTERNET上的WEB服务器主要是基于UNIX的,所以,AU格式的文件在如今的INTERNET中也是常用的声音文件格式。
MPEG
MPEG是动态图象专家组的英文缩写。这个专家组始建于1988年,专门负责为CD建立视频和音频压缩标准。MPEG音频文件指的是MPEG标准中的声音部分即MPEG音频层。目前INTERNET上的音乐格式以MP3最为常见。虽然它是一种有损压缩,但是它的最大优势是以极小的声音失真换来了较高的压缩比。MPEG含有格式包括:MPEG-1、MPEG-2、MPEG-Layer3、MPEG-4
MP3
MP3格式诞生于八十年代的德国,所谓的MP3也就是指的是MPEG标准中的音频部分,也就是MPEG音频层。根据压缩质量和编码处理的不同分为3层,分别对应“*.mp1"/“*.mp2”/“*.mp3”这3种声音文件。需要提醒大家注意的地方是:MPEG音频文件的压缩是一种有损压缩,MPEG3音频编码具有10:1~12:1的高压缩率,同时基本保持低音频部分不失真,但是牺牲了声音文件中12KHz到16KHz高音频这部分的质量来换取文件的尺寸,相同长度的音乐文件,用*.mp3格式来储存,一般只有*.wav文件的1/10,而音质要次于CD格式或WAV格式的声音文件。由于其文件尺寸小,音质好;所以在它问世之初还没有什么别的音频格式可以与之匹敌,因而为*.mp3格式的发展提供了良好的条件。直到现在,这种格式还是风靡一时,作为主流音频格式的地位难以被撼动。但是树大招风,MP3音乐的版权问题也一直是找不到办法解决,因为MP3没有版权保护技术,说白了也就是谁都可以用。
MP3格式压缩音乐的采样频率有很多种,可以用64Kbps或更低的采样频率节省空间,也可以用320Kbps的标准达到极高的音质。用装有Fraunhofer IIS Mpeg Lyaer3的 MP3编码器(现在效果最好的编码器)MusicMatch Jukebox 6.0在128Kbps的频率下编码一首3分钟的歌曲,得到2.82MB的MP3文件。采用缺省的CBR(固定采样频率)技术可以以固定的频率采样一首歌曲,而VBR(可变采样频率)则可以在音乐“忙”的时候加大采样的频率获取更高的音质,不过产生的MP3文件可能在某些播放器上无法播放。把VBR的级别设定成为与前面的CBR文件的音质基本一样,生成的VBR MP3文件为2.9MB。
MP3是到2008年止使用用户最多的有损压缩数字音频格式了。它的全称是MPEG(MPEG:
MovingPictureExpertsGroup)AudioLayer-3,刚出现时它的编码技术并不完善,它更像一个编码标准框架,留待人们去完善。早期的MP3编码采用的的是固定编码率的方式(CBR),看到的128KBPS,就是代表它是以128KBPS固定数据速率编码——你可以提高这个编码率,最高可以到320KBPS,音质会更好,自然,文件的体积会相应增大。
因为MP3的编码方式是开放的,可以在这个标准框架的基础上自己选择不同的声学原理进行压缩处理,所以,很快由Xing公司推出可变编码率的压缩方式(VBR)。它的原理就是利用将一首歌的复杂部分用高bitrate编码,简单部分用低bitrate编码,通过这种方式,进一步取得质量和体积的统一。当然,早期的Xing编码器的VBR算法很差,音质与CBR(固定码率)相去甚远。但是,这种算法指明了一种方向,其他开发者纷纷推出自己的VBR算法,使得效果一直在改进。目前公认比较好的首推LAME,它完美地实现了VBR算法,而且它是是完全免费的软件,并且由爱好者组成的开发团队一直在不断的发展完善。
而在VBR的基础上,LAME更加发展出ABR算法。ABR(AverageBitrate)平均比特率,是VBR的一种插值
ffmpeg 编程指南
参数。LAME针对CBR不佳的文件体积比和VBR生成文件大小不定的特点独创了这种编码模式。ABR在指定的文件大小内,以每50帧(30帧约1秒)为一段,低频和不敏感频率使用相对低的流量,高频和大动态表现时使用高流量,可以做为VBR和CBR的一种折衷选择。
MP3问世不久,就凭这较高的压缩比12:1和较好的音质创造了一个全新的音乐领域,然而MP3的开放性却最终不可避免的导致了版权之争,在这样的背景之下,文件更小,音质更佳,同时还能有效保护版权的MP4就应运而生了。MP3和MP4之间其实并没有必然的联系,首先MP3是一种音频压缩的国际技术标准,而MP4却是一个商标的名称。
MPEG-4
MPEG-4标准是由国际运动图像专家组于2000年10月公布的一种面向多媒体应用的视频压缩标准。它采用了基于对象的压缩编码技术,在编码前首先对视频序列进行分析,从原始图像中分割出各个视频对象,然后再分别对每个视频对象的形状信息、运动信息、纹理信息单独编码,并通过比MPEG-2更优的运动预测和运动补偿来去除连续帧之间的时间冗余。其核心是基于内容的尺度可变性(Content-basedscalability),可以对图像中各个对象分配优先级,对比较重要的对象用高的空间和时间分辨率表示,对不甚重要的对象(如监控系统的背景)以较低的分辨率表示,甚至不显示。因此它具有自适应调配资源能力,可以实现高质量低速率的图像通信和视频传输。 MPEG-4以其高质量、低传输速率等优点已经被广泛应用到网络多媒体、视频会议和多媒体监控等图像传输系统中。中国内外大部分成熟的MPEG-4应用均为基于PC层面的客户端和服务器模式,应用在嵌入式系统上的并不多,且多数嵌入式
MPEG-4解码系统大多使用商业的嵌入式操作系统,如WindowsCE、VxWorks等,成本高、灵活性差。如以嵌入式Linux作为操作系统不仅开发方便,且可以节约成本,并可以根据实际情况进行裁减,占用资源少、灵活性强,网络性能好,适用范围更广。
MIDI
MIDI(Musical Instrument Digital Interface)格式被经常玩音乐的人使用,MIDI允许数字合成器和其他设备交换数据。MID文件格式由MIDI继承而来。MID文件并不是一段录制好的声音,而是记录声音的信息,然后在告诉声卡如何再现音乐的一组指令。这样一个MIDI文件每存1分钟的音乐只用大约5~10KB。MID文件主要用于原始乐器作品,流行歌曲的业余表演,游戏音轨以及电子贺卡等。*.mid文件重放的效果完全依赖声卡的档次。*.mid格式的最大用处是在电脑作曲领域。*.mid文件可以用作曲软件写出,也可以通过声卡的MIDI口把外接音序器演奏的乐曲输入电脑里,制成*.mid文件。
WMA
WMA (Windows Media Audio) 格式是来自于微软的重量级选手,后台强硬,音质要强于MP3格式,更远胜于RA格式,它和日本YAMAHA公司开发的VQF格式一样,是以减少数据流量但保持音质的方法来达到比MP3压缩率更高的目的,WMA的压缩率一般都可以达到1:18左右,WMA的另一个优点是内容提供商可以通过DRM(Digital Rights Management)方案如Windows Media Rights Manager 7加入防拷贝保护。这种内置了版权保护技术可以限制播放时间和播放次数甚至于播放的机器等等,这对被盗版搅得焦头乱额的音乐公司来说可是一个福音,另
ffmpeg 编程指南
外WMA还支持音频流(Stream)技术,适合在网络上在线播放,作为微软抢占网络音乐的开路先锋可以说是技术领先、风头强劲,更方便的是不用象MP3那样需要安装额外的播放器,而Windows操作系统和Windows Media Player的无缝捆绑让你只要安装了windows操作系统就可以直接播放WMA音乐,新版本的Windows Media Player7.0更是增加了直接把CD光盘转换为WMA声音格式的功能,在新出品的操作系统Windows XP中,WMA是默认的编码格式,大家知道Netscape的遭遇,现在“狼”又来了。WMA这种格式在录制时可以对音质进行调节。同一格式,音质好的可与CD媲美,压缩率较高的可用于网络广播。虽然现在网络上还不是很流行,但是在微软的大规模推广下已经是得到了越来越多站点的承认和大力支持,在网络音乐领域中直逼*.mp3,在网络广播方面,也正在瓜分Real打下的天下。因此,几乎所有的音频格式都感受到了WMA格式的压力。
微软官方宣布的资料中称WMA格式的可保护性极强,甚至可以限定播放机器、播放时间及播放次数,具有相当的版权保护能力。应该说,WMA的推出,就是针对MP3没有版权限制的缺点而来——普通用户可能很欢迎这种格式,但作为版权拥有者的唱片公司来说,它们更喜欢难以复制拷贝的音乐压缩技术,而微软的WMA则照顾到了这些唱片公司的需求。
除了版权保护外,WMA还在压缩比上进行了深化,它的目标是在相同音质条件下文件体积可以变的更小(当然,只在MP3低于192KBPS码率的情况下有效,实际上当采用LAME算法压缩MP3格式时,高于192KBPS时普遍的反映是MP3的音质要好于WMA)。
RealAudio
RealAudio主要适用于在网络上的在线音乐欣赏,现在大多数的用户仍然在使用56Kbps或更低速率的Modem,所以典型的回放并非最好的音质。有的下载站点会提示你根据你的Modem速率选择最佳的Real文件。real的的文件格式主要有这么几种:有RA(RealAudio)、RM(RealMedia,RealAudio G2)、RMX(RealAudio Secured),还有更多。这些格式的特点是可以随网络带宽的不同而改变声音的质量,在保证大多数人听到流畅声音的前提下,令带宽较富裕的听众获得较好的音质。
近来随着网络带宽的普遍改善,Real公司正推出用于网络广播的、达到CD音质的格式。如果你的RealPlayer软件不能处理这种格式,它就会提醒你下载一个免费的升级包。许多音乐网站 提供了歌曲的Real格式的试听版本。现在最新的版本是RealPlayer 9.0,第39期《电脑报》也对RealPlayer 9.0作了详细的介绍,这里不再赘述。 VQF
雅马哈公司另一种格式是*.vqf,它的核心是减少数据流量但保持音质的方法来达到更高的压缩比,VQF的音频压缩率比标准的MPEG音频压缩率高出近一倍,可以达到18:1左右甚至更高。也就是说把一首4分钟的歌曲(WAV
ffmpeg 编程指南
文件)压成MP3,大约需要4MB左右的硬盘空间,而同一首歌曲,如果使用VQF音频压缩技术的话,那只需要2MB左右的硬盘空间。因此,在音频压缩率方面,MP3和RA都不是VQF的对手。相同情况下压缩后VQF的文件体积比MP3小30%~50%,更便利于网上传播,同时音质极佳,接近CD音质(16位44.1kHz立体声)。可以说技术上也是很先进的,但是由于宣传不力,这种格式难有用武之地。*.vqf可以用雅马哈的播放器播放。同时雅马哈也提供从*.wav文件转换到*.vqf文件的软件。 此文件缺少特点外加缺乏宣传。
当VQF以44KHz、80kbit/s的音频采样率压缩音乐时,它的音质优于44KHz、128kbit/s的MP3,当VQF以44KHz、96kbit/s的频率压缩时,它的音质几乎等于44KHz、256kbit/s的MP3。经SoundVQ压缩后的音频文件在进行回放效果试听时,几乎没有人能听出它与原音频文件的差异。
VQF音频文件个格式
播放VQF对计算机的配置要求仅为奔腾75或更高,当然如果您用奔腾100或以上的机器,VQF能够运行得更加出色。实际上,播放VQF对CPU的要求仅比Mp3高5~10%左右。
VQF即TwinVQ技术虽然是由NTT和YAMAHA开发的,但它们的应用软件都是免费的。只是NTT和YAMAHA并没有公布VQF的源代码。
OggVorbis
OggVorbis是一种新的音频压缩格式,类似于MP3等现有的音乐格式。但有一点不同的是,它是完全免费、开放和没有专利限制的。Vorbis是这种音频压缩机制的名字,而Ogg则是一个计划的名字,该计划意图设计一个完全开放性的多媒体系统。目前该计划只实现了OggVorbis这一部分。
OggVorbis文件的扩展名是*.OGG。这种文件的设计格式是非常先进的。这种文件格式可以不断地进行大小和音质的改良,而不影响旧有的编码器或播放器。
VORBIS采用有损压缩,但通过使用更加先进的声学模型去减少损失,因此,同样位速率(BitRate)编码的OGG与MP3相比听起来更好一些。另外,还有一个原因,MP3格式是受专利保护的。如果你想使用MP3格式发布自己的作品,则需要付给Fraunhofer(发明MP3的公司)专利使用费。而VORBIS就完全没有这个问题。
对于乐迷来说,使用OGG文件的显著好处是可以用更小的文件获得优越的声音质量。而且,由于OGG是完全开放和免费的,制作OGG文件将不受任何专利限制,可望可以获得大量的编码器和播放器。这也是为何现在MP3编码器如此少而且大多是商业软件的原因,因为Fraunhofer要收取专利使用费。Vorbis使用了与MP3相比完全不同的数学原理,因此在压缩音乐时受到的挑战也不同。同样位速率编码的Vorbis和MP3文件具有同等的声音质量。Vorbis具有一个设计良好、灵活的注释,避免了象MP3文件的ID3标记那样烦琐的操作;Vorbis还具有位速率缩放:可以不用重新编码便可调节文件的位速率。Vorbis文件可以被分成小块并以样本粒度进行编辑;Vorbis支持多通道;Vorbis文件可以以逻辑方式相连接等。
AMR
AMR全称Adaptive Multi-Rate,自适应多速率编码,主要用于移动设备的音频,压缩比比较大,但相对其他的压缩格式质量比较差,由于多用于人声,通话,效果还是很不错的。
分类
1. AMR: 又称为AMR-NB,相对于下面的WB而言,语音带宽范围:300-3400Hz,8KHz抽样
2. AMR-WB:AMR WideBand,
语音带宽范围: 50-7000Hz 16KHz抽样
“AMR-WB”全称为“Adaptive Multi-rate - Wideband”,即“自适应多速率宽带编码”,采样频率为16kHz,是一种同时被国际标准化组织ITU-T和3GPP采用的宽带语音编码标准,也称为G722.2标准。AMR-WB提供语音带宽范围达到50~7000Hz,用户可主观感受到话音比以前更加自然、舒适和易于分辨。
与之作比较,现在GSM用的EFR(Enhenced Full Rate,增强型全速率编码)采样频率为8kHz,语音带宽为200~3400Hz。
AMR-WB应用于窄带GSM(全速信道16k,GMSK)的优势在于其可采用从6.6kb/s, 8.85kb/s和12.65kb/s三种编
ffmpeg 编程指南
码,当网络繁忙时C/I恶化,编码器可以自动调整编码模式,从而增强QoS。在这种应用中,AMR-WB抗扰度优于AMR-NB。
AMR-WB应用于EDGE、3G可充分体现其优势。足够的传输带宽保证AMR-WB可采用从 6.6kb/s到23.85kb/s共九种编码,语音质量超越PSTN固定电话。
1.2.2比较
作为数字音乐文件格式的标准,WAV格式容量过大,因而使用起来很不方便。因此,一般情况下我们把它压缩为MP3或WMA格式。压缩方法有无损压缩,有损压缩,以及混成压缩。MPEG,JPEG就属于混成压缩,如果把压缩的数据还原回去,数据其实是不一样的。当然,人耳是无法分辨的。因此,如果把MP3,OGG格式从压缩的状态还原回去的话,就会产生损失。然而,APE格式即使还原,也能毫无损失地保留原有音质。所以,APE可以无损失高音质地压缩和还原。在完全保持音质的前提下,APE的压缩容量有了适当的减小。拿一个最为常见的38MBWAV文件为例,压缩为APE格式后为25MB左右,比开始足足少了13MB。而且MP3容量越来越大的今天,25M的歌曲已经算不上什么庞然大物了。以1GB的mp3来说可以放入4张CD,那就是40多首歌曲,已经足够了!
MP3支持格式有MP3和WMA。MP3由于是有损压缩,因此讲求采样率,一般是44.1KHZ。另外,还有比特率,即数据流,一般为8---320KBPS。在MP3编码时,还看看它是否支持可变比特率(VBR),现在出的MP3机大部分都支持,这样可以减小有效文件的体积。WMA则是微软力推的一种音频格式,相对来说要比MP3体积更小。
1.3字幕格式
1.3.1外挂字幕与内嵌字幕的阐述
外挂字幕:是视频文件和字幕文件分离,在播放的时候要导入字幕文件。比如DVD就会自动导入字幕。外挂字幕的好处是:可以导入自己国家的语言。
内嵌字幕:视频文件和字幕文件已经集成到了一起,没有办法改变和去掉了。
1.3.2外挂字幕视频与内嵌字幕视频的画面比较
外挂字幕相对于内嵌字幕来说对视频的质量损害就会小很多,外挂的意思就是在视频之外单独运行的一种字幕文件,对视频本身的分辨率损害很小甚至为零。而内嵌的字面意思就是将视频连带外挂字幕用专有的录制软件重新将视频录制一遍,成为一个新的视频;这种方法虽然解决了视频体积过大和播放器不兼容等问题,但是在重新录制视频过程当中会无意识的损害原视频本身的码率,使重新录制出来的视频分辨率大大不如原视频,所以在选择外挂与内嵌字幕时需结合自身情况考虑视频需要进行选择。
1.3.3外挂字幕的三种格式
1、srt格式:这是最好的,体积小,用记事本可以打开编辑。
2、sub+idx:这种是图形字幕,只能用字幕转换软件;体积较大。
ffmpeg 编程指南
3、ass字幕:网上比较少,比srt多一些特效。
外挂字幕的一些基本注意事项:
使用外挂字幕的时候,要保证字幕文件和视频文件放置在同一个文件夹下,并且保证两者的文件名相同,但是不要修改后缀和标识(常见的标识有chs、GB,cht,Big5,eng五种;其中chs和GB表示简体中文,cht和Big5表示繁体中文,eng表示英文):
例如:
视频的文件名为:越狱(13).avi
外挂字幕的文件名就应为:越狱(13).chs.srt 当然,能在视频中显示字幕的前提是你的电脑里安装有字幕插件。否则建议安装能够完美解码的万能播放器。
1.4采集录制和播放渲染
1.4.1视频采集
视频采集(Video Capture)把模拟视频转换成数字视频,并按数字视频文件的格式保存下来。所谓视频采集就是将模拟摄像机、录像机、LD视盘机、电视机输出的视频信号,通过专用的模拟、数字转换设备,转换为二进制数字信息的过程。在视频采集工作中,视频采集卡是主要设备,它分为专业和家用两个级别。专业级视频采集卡不仅可以进行视频采集,并且还可以实现硬件级的视频压缩和视频编辑。家用级的视频采集卡只能做到视频采集和初步的硬件级压缩,而更为“低端”的电视卡,虽可进行视频的采集,但它通常都省却了硬件级的视频压缩功能。 视频保存格式
影片拍好了,可以直接放在DV带上保存,以后就用DV机回放,也可以采集到计算机里,编辑后回录到DV带上,还可以采集到计算机里,直接把DVAVI文件刻到CDR上去保存,也可以压缩成MPG,刻成VCD或者SVCD,DVD和CD保存。MPG是有损压缩,不管是压缩成什么格式,对画质都有损失,但是刻MPG盘保存还是最常用的方式。
DV影片的回放在电视机上的表现远强于在CRT上的表现,尽管CRT的分辨率要高得多,主要是因为电视的设计就是为了显示动态画面,所以在亮度、色彩鲜艳上都比显示静态为主的CRT要好,而普通电视的显示分辨率只有320线,那么DV的高达720×576的分辨率根本用不着,不管是VCD的352×288还是SVCD的480×576都够了,所以尽管压缩成MPG画质有损失,但是在电视上基本是看不出来的。在电脑上看,SVCD的分辨率也足够清晰了。 保存格式的优劣性
DV带的保存是个问题,毕竟是磁带,DV带还用得时间不长,但是以前的录音机磁带时间长了粘连和发霉大家估计都见过的。而CDR光盘蓝盘、绿盘在一般情况下不磨损光盘一般是保存30~50年,金盘号称能保存100年,虽然
ffmpeg 编程指南
光盘也有发霉的可能,但是毕竟好得多。
播放的方便性上,也是光盘强,DV带就得把DV机搬出来,还只能在电视上看,对磁头也是个磨损,倒带也很麻烦,而VCD,SVCD光盘方便。
1.4.2视频录制
1.4.3视频渲染
渲染,英文为Render,也有的把它称为着色,但我更习惯把Shade称为着色,把Render称为渲染。因为Render和Shade这两个词在三维软件中是截然不同的两个概念,虽然它们的功能很相似,但却有不同。Shade是一种显示方案,一般出现在三维软件的主要窗口中,和三维模型的线框图一样起到辅助观察模型的作用。很明显,着色模式比线框模式更容易让我们理解模型的结构,但它只是简单的显示而已,数字图像中把它称为明暗着色法。在像Maya这样的高级三维软件中,还可以用Shade显示出简单的灯光效果、阴影效果和表面纹理效果,当然,高质量的着色效果是需要专业三维图形显示卡来支持的,它可以加速和优化三维图形的显示。但无论怎样优化,它都无法把显示出来的三维图形变成高质量的图像,这是因为Shade采用的是一种实时显示技术,硬件的速度限制它无法实时地反馈出场景中的反射、折射等光线追踪效果。而现实工作中我们往往要把模型或者场景输出成图像文件、视频信号或者电影胶片,这就必须经过Render程序。
Shade窗口,提供了非常直观、实时的表面基本着色效果,根据硬件的能力,还能显示出纹理贴图、光源影响甚至阴影效果,但这一切都是粗糙的,特别是在没有硬件支持的情况下,它的显示甚至会是无理无序的。Render效果就不同了,它是基于一套完整的程序计算出来的,硬件对它的影响只是一个速度问题,而不会改变渲染的结果,影响结果的是看它是基于什么程序渲染的,比如是光影追踪还是光能传递。
渲染过程
首先,必须定位三维场景中的摄像机,这和真实的摄影是一样的。一般来说,三维软件已经提供了四个默认的摄像机,那就是软件中四个主要的窗口,分为顶视图、正视图、侧视图和透视图。我们大多数时候渲染的是透视图而不是其它视图,透视图的摄像机基本遵循真实摄像机的原理,所以我们看到的结果才会和真实的三维世界一样,具备立体感。接下来,为了体现空间感,渲染程序要做一些“特殊”的工作,就是决定哪些物体在前面、哪些物体在后面和哪些物体被遮挡等。空间感仅通过物体的遮挡关系是不能完美再现的,很多初学三维的人只注意立体感的塑造而忽略了空间感。要知道空间感和光源的衰减、环境雾、景深效果都是有着密切联系的。
渲染程序通过摄像机获取了需要渲染的范围之后,就要计算光源对物体的影响,这和真实世界的情况又是一样的。许多三维软件都有默认的光源,否则,我们是看不到透视图中的着色效果的,更不要说渲染了。因此,渲染程序就是要计算我们在场景中添加的每一个光源对物体的影响。和真实世界中光源不同的是,渲染程序往往要计算大量的辅助光源。在场景中,有的光源会照射所有的物体,而有的光源只照射某个物体,这样使得原本简单的事情又变得复杂起来。在这之后,还要是使用深度贴图阴影还是使用光线追踪阴影?这往往取决于在场景中是否使用了透明材质的物体计算光源投射出来的阴影。另外,使用了面积光源之后,渲染程序还要计算一种特殊的阴影--软阴影(只能使用光线追踪),场景中的光源如果使用了光源特效,渲染程序还将花费更多的系统资源来计算特效的结果,特别是体积光,也称为灯光雾,它会占用大量的系统资源,使用的时候一定要注意。
在这之后,渲染程序还要根据物体的材质来计算物体表面的颜色,材质的类型不同,属性不同,纹理不同都会产生各种不同的效果。而且,这个结果不是独立存在的,它必须和前面所说的光源结合起来。如果场景中有粒子系统,比如火焰、烟雾等,渲染程序都要加以“考虑”。
数字影片的后期处理
ffmpeg 编程指南
对录制完成的数字影片进行了剪接、加效果、加字幕、音乐等后期制作,当生成影片时需要将后加入的素材融合到影片中并压缩成为影片最终格式。这个一般都是这样,只是因环境的不同而不同。
渲染滤镜
“渲染”滤镜在图像中创建云彩图案、折射图案和模拟的光反射。也可在 3D 空间中操纵对象,并从灰度文件创建纹理填充以产生类似 3D 的光照效果。
1、分层云彩
使用随机生成的介于前景色与背景色之间的值,生成云彩图案。此滤镜将云彩数据和现有的像素混合,其方式与“差值”模式混合颜色的方式相同。第一次选取此滤镜时,图像的某些部分被反相为云彩图案。应用此滤镜几次之后,会创建出与大理石的纹理相似的凸缘与叶脉图案。
2、光照效果
使您可以通过改变 17 种光照样式、3 种光照类型和 4 套光照属性,在 RGB 图像上产生无数种光照效果。还可以使用灰度文件的纹理(称为凹凸图)产生类似 3D 的效果,并存储您自己的样式以在其它图像中使用。
3、镜头光晕
模拟亮光照射到像机镜头所产生的折射。通过点按图像缩览图的任一位置或拖移其十字线,指定光晕中心的位置。
4、纹理填充
用灰度文件或其中的一部分填充选区。若要将纹理添加到文档或选区,请打开要用作纹理填充的灰度文档。并将它装入要进行纹理填充的图像的某一通道中(新建),执行完效果后,可以看到灰度图浮凸在该图像中的效果。
5、云彩
使用介于前景色与背景色之间的随机值,生成柔和的云彩图案。若要生成色彩较为分明的云彩图案,请按住 Alt 键并选取“滤镜/渲染/云彩”命令。
【Proe中的渲染】
Pro / E 提供了制作高质量图像的渲染工具,能使零件或装配的显现近乎于照片。使用Pro/E的渲染功能,给予各零件色彩及相应的透明度,可是所设计的产品立体分明,更具视觉效果。而不必通过产生样机或实物模型来比较外观。特别是值入了 CDRS2001 里的高级渲染功能 Photolux,增加渲染的特殊效果而设的指令,可以做出雾效和透镜闪光等效果。可以将产品模型置于特定的环境,比如室内,你可以在此设置地板、四壁和天花板的背景,可对背景进行预览、尺寸和位置的调整;可以在特征或某个表面上设置材质,定义表面颜色、透明度、粗糙度和纹理等;另外,运用贴图功能在产品和包装上生成和附加常规的标记和图案,指定每个图案的大小、位置和透明度;指定光线类型颜色和强度,方便地选择和控制阴影的形式。
1.5编解码器
编解码器(codec)指的是一个能够对一个信号或者一个数据流进行变换的设备或者程序。这里指的变换既包括将信号或者数据流进行编码(通常是为了传输、存储或者加密)或者提取得到一个编码流的操作,也包括为了观察或者处理从这个编码流中恢复适合观察或操作的形式的操作。编解码器经常用在视频会议和流媒体等应用中,通常主要还是用在广电行业,作前端应用。
经过编码的音频或者视频原始码流经常被叫做“Essence”(有译作“本体”,“精”),以区别于之后加入码流的元信息和其它用以帮助访问码流和增强码流鲁棒性的数据。
大多数编解码器是有损的,目的是为了得到更大的压缩比和更小的文件大小。当然也有无损的编解码器,但是通常没有必要为了一些几乎注意不到的的质量损失而大大增加编码后文件的大小。除非该编码的结果还将在以后进行下一步的处理,此时连续的有损编码通常会带来较大的质量损失。
很多多媒体数据流需要同时包含音频数据和视频数据,这时通常会加入一些用于音频和视频数据同步的元数
ffmpeg 编程指南
据。这三种数据流可能会被不同的程序,进程或者硬件处理,但是当它们传输或者存储的时候,这三种数据通常是被封装在一起的。通常这种封装是通过视频文件格式来实现的,例如常见的*.mpg, *.avi, *.mov, *.mp4, *.rm, *.ogg or *.tta. 这些格式中有些只能使用某些编解码器,而更多可以以容器的方式使用各种编解码器。
编解码器对应的英文“codec”(coder和decoder简化而成的合成词语)和decode通常指软件,当特指硬件的时候,通常使用“endec”这个单词。
硬件编解码器有标清编解码器和高清编解码器。所谓标清,英文为“Standard Definition”,是物理分辨率在720p以下的一种视频格式。720p是指视频的垂直分辨率为720线逐行扫描。具体的说,是指分辨率在400线左右的VCD、DVD、电视节目等“标清”视频格式,即标准清晰度。而物理分辨率达到720p以上则称作为高清,(英文表述High Definition)简称HD。关于高清的标准,国际上公认的有两条:视频垂直分辨率超过720p或1080i;视频宽纵比为16:9。
1.6容器和协议
1.6.1容器格式和编码格式
1.6.1.1 简介
音频视频编码及文件格式(容器)是一个很庞大的知识领域,完整的说清楚,那就需要些写成一本教材了。这里先就几个简单的概念问题作以介绍:
首先要分清楚媒体文件和编码的区别:
文件是既包括视频又包括音频、甚至还带有脚本的一个集合,也可以叫容器;
文件当中的视频和音频的压缩算法才是具体的编码。
也就是说一个.avi文件,当中的视频可能是编码a,也可能是编码b,音频可能是编码5,也可能是编码6,具体的用那种编码的解码器,则由播放器按照avi文件格式读取信息去调用了。
音频视频编码方案有很多,用百家争鸣形容不算过分,目前常见的音频视频编码有以下几类:
MPEG系列:(由ISO[国际标准组织机构]下属的MPEG[运动图象专家组]开发 )
视频编码方面主要是Mpeg1(vcd用的就是它)、Mpeg2(DVD使用)、Mpeg4(现在的DVDRIP使用的都是它的变种,如:divx,xvid等)、Mpeg4 AVC(现在正热门);
音频编码方面主要是MPEG Audio Layer 1/2、MPEG Audio Layer 3(大名鼎鼎的mp3)、MPEG-2 AAC 、MPEG-4 AAC等等。 注意:DVD音频没有采用Mpeg的
H.26X系列:(由ITU[国际电传视讯联盟]主导,侧重网络传输,注意:只是视频编码)
包括H261、H262、H263、H263+、H263++、H264(就是MPEG4 AVC-合作的结晶)
微软windows media系列:(公司牛,能自己定标准啊...)
视频编码有Mpeg-4 v1/v2/v3(基于MPEG4,DIVX3的来源,呵呵)、Windows Media Video 7/8/9/10
音频编码有Windows Media audeo v1/v2/7/8/9
Real Media系列:(注意,这里说的Real的编码,可不是rm、rmvb文件,呵呵)
视频编码有RealVideo G2(早期)、RealVideo 8/9/10
音频编码有RealAudio cook/sipro(早期)、RealAudio AAC/AACPlus等
QuickTime系列:(是一个平台,有很多编码器)
ffmpeg 编程指南
视频编码有Sorenson Video 3(用于QT5,成标准了)、Apple MPEG-4、Apple H.264
音频编码有QDesign Music 2、Apple MPEG-4 AAC (这个不错)
其它,如:Ogg、On2-vpx、flash vidio:不详述啦。
特殊说明的,是DVD这种媒介的音频编码,采用了相对独立的几种,就列2个常见的吧:AC3(杜比公司开发)、DTS文件格式(容器):
AVI
音视频交互存储,最常见的音频视频容器。支持的视频音频编码也是最多的。
MPG
MPEG编码采用的音频视频容器,具有流的特性。里面又分为 PS,TS 等,PS 主要用于 DVD 存储,TS 主
要用于 HDTV。
VOB
DVD采用的音频视频容器格式(即视频MPEG-2,音频用AC3或者DTS),支持多视频多音轨多字幕章节等。 MP4
MPEG-4编码采用的音频视频容器,基于QuickTime MOV开发,具有许多先进特性。
3GP
3GPP视频采用的格式,主要用于流媒体传送。
ASF
Windows Media 采用的音频视频容器,能够用于流传送,还能包容脚本等。
RM
RealMedia 采用的音频视频容器,用于流传送。
注意:RMVB,是视频编码部分采用可变码率压缩的文件格式(容器)
MOV
QuickTime 的音频视频容器,恐怕也是现今最强大的容器,甚至支持虚拟现实技术,Java 等,它的变种 MP4,3GP都没有这么厉害。
MKV
MKV 它能把 Windows Media Video,RealVideo,MPEG-4 等视频音频融为一个文件,而且支持多音轨,支持章节字幕等。
WAV
一种音频容器(注意:只是音频),大家常说的 WAV 就是没有压缩的 PCM 编码,其实 WAV 里面还可以包括 MP3 等其他 ACM 压缩编码。
MP3
如前所述,不用多说了吧?就是MPEG Audio Layer 3(Mpeg 1 的音频编码的一种)
文件转换(实际上也是编码转换)
1.6.1.2 多媒体容器文件格式
多媒体容器文件格式一般都包括文件头部分、索引部分和多媒体数据部分(如图1所示)。
ffmpeg 编程指南
文件头部分
索引部分
多媒体数据部分文件头部分说明了多媒体数据符合的压缩标准及规范信息,多媒体数据符合的规范信息可以包括视频的分辨率、帧率,音频的采样率等。
索引部分:由于多媒体数据通常会被分成若干块,各块数据之间也可能是不连续存储的,因此需要再索引部分建立多媒体数据的存储位置索引(如图2所示),其详细显示了视频数据存储位置索引,用来记录相应数据块的存储位置的偏移量,由于各数据块的大小可能不同,因此也可能需要在索引部分建立各种多媒体数据块的尺寸大小索引,用来记录相应数据块的尺寸大小。此外在索引部分还建立了其他索引,比如音视频同步索引等等。PC上播放这些多媒体容器文件时,一般是将索引一次性的全部放到内存中,然后在播放中根据操作(快进、快退等)来通过数据索引得到所需的数据。这个貌似和项目里面的视频信息文件的作用类似~~~
多媒体数据部分就是经过压缩的多媒体数据,包括视频数据、音频数据、文本数据及其他多媒体数据。
1.6.1.3 音频编解码格式
a) 音频编解码格式
*MPEG Audio Layer 1/2
*MPEG Audio Layer 3(MP3)
*MPEG2 AAC
*MPEG4 AAC
*Windows Media audeo v1/v2/7/8/9
*RealAudio cook/sipro(real media array)
*RealAudio AAC/AACPlus(real media series)
*QDesign Music 2(apple series)
是QDesign 公司开发的用于高保真高压缩率的编码方式,类似于MP3,不过比MP3要先进。支持流式播放. *Apple MPEG-4 AAC(apple series)
*ogg(ogg vorbis音频)
正在阅读:
改进合作学习第四次测验答案01-12
鸡胚培养和细胞培养05-16
个人第三季度工作总结范文01-05
施工日志模板02-01
IAR编译问题04-22
广东省某重点中学2013届高三数学理二轮复习之概率统计专题三06-25
才高八斗成语小故事11-20
行政诉讼中行政机关的举证责任及期限01-05
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 20140307
- 编程
- 基础
- ffmpeg
- 开发
- 小学教师基本功大赛方案
- 20花的勇气教学设计
- 基于机械制造业的MRP_JIT混合生产系统的研究与应用
- 【学案】【第6章 不等式】6.3 二元一次不等式组与简单的线性规划
- 李阳煤业机运队工资分配及工程考核办法
- 2015年初级会计职称考试预习方法
- 2010年成都写字楼年度报告
- 预防校园暴力伤害主题班会
- 学生要养成的十大好习惯
- 关于物流管理系统的几个管理要求的探讨
- 通风区9、10、11、12月份隐患预排查预分析
- 在线编辑word&powerpoint的电子备课系统
- 实实在在地打基础——云南省红河哈尼族彝族自治州安监局局长张正明访谈
- 大棚韭菜栽培技术要点
- 开展社区矫正工作汇报材料
- 揭开特异功能的神秘面纱一集
- 我国转基因食品市场准入和召回研究
- 对我国石油生产流通体制模式的研究
- 第三章 案例分析
- 初中数学苏科版七年级上册第二章 有理数2.8 有理数的混合运算-章节测试习题(8)