当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 6 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 音视频编码简介
帖子发表于 : 2010-07-31 11:29 

注册: 2008-04-11 23:31
帖子: 185
送出感谢: 0 次
接收感谢: 0 次
音视频编码简介

放假有一段时间了,每天都闲得发疯,不过幸运的是这个假期我终于能在家上网了!某一天,我看到这样一条新闻:“三位FFmpeg项目开发者——Ronald Bultje、David Conrad以及Jason Garrett-Glaser(同为x264项目开发者)宣布了他们独自开发的VP8解码器自由软件实现”。这一下子让我想起了Google收购On2,并开放WebM标准的事,还有最近的HTML5之争。看到这儿,你可能跟以前的我一样:这都是什么跟什么?
这儿莫名其妙的名词让我想起来看电影的种种痛苦经历:哎呀,怎么AVI格式的突然放不了了;怎么又出来一个MKV格式,文件还怎么大;……现在都多出来WebM、VP8,这都是什么啊?虽然这些乱七八糟的格式并不影响我们看电影,但本着“知其然,知其所以然”的原则,我对这些术语和名词进行了一番“深度搜索”+“刻苦研究”,终于略有收获。现在总结一下,与大家分享。
这篇文章中用到的工具有MPlayer(基于命令行的播放器)、mencoder(基于命令行的转码器)、Firefox(图形界面的浏览器,嘿嘿)。命令行的MPlayer当然不如图形化的好用,但功能那是相当强大,具体使用我就不说了。文中用到的测试视频都是从这个网站(http://samples.mplayerhq.hu/)下载的。
本文主要从使用者的角度看问题,所以不涉及理论,细节更是没有。好了,废话少说,让我们步入正题。


正题:
任何影片的播放都分为3个步骤:拆包->解码->渲染,分别对应播放器的分离器(demuxer)->解码器(decode)->渲染器
说到这儿,应该讲一下视频和音频的基础知识。平时我们所说的格式,如avi 、ts 、mkv 、rmvb 、mp3 、ape 、mov 、wmv 、flv等等,不是视频音频编码格式,而是封装包的格式。封包只是个容器而已,里面装的是压缩的视频、压缩的音频、字幕等。而传说中的xvid,divx,mpeg4等等才是视频编码格式,mp3,aac,flac,ape等等才是音频编码格式。这些某某格式到底是什么呢?嘿嘿,我也不知道,我理解为是对视频或者音频的压缩算法。
以上都是我copy+篡改的,下面听听我个人的理解。想象有红、蓝、绿三种彩带,上面都写着密密麻麻的文字,分别代表视频流、音频流和字幕。下面我们把三种彩带都剪成一段一段的,然后用胶水按红蓝绿的顺序(其他顺序也行)重新连接起来(是不是很好看?),就OK了。所谓的封装包的格式就是这些红彩带、蓝彩带、绿彩带的段长啊,连接顺序啊等,有些mkv格式的文件包含多种语言的字幕,就可以理解为红、蓝、绿、紫、橙等多种彩带剪开后重新连接到一起。所谓音视频编码格式,就是彩带上的文字所用的语言。
拆包,即是播放器调用分离器,将封包中的视频轨道和音频轨道正确的取出来的过程。这样想,所谓拆包就是把连接好的彩带在胶水粘连的位置剪开的过程。剪开之后,不同颜色的彩带被分发到不同的解码器那儿。到底有哪些分离器呢?MPlayer可以告诉我们共有38个,下面显示的是大家比较熟悉的几个。
命令:mplayer –demuxer help
结果:
Available demuxers:
demuxer: type info: (comment)
rawaudio 20 Raw audio demuxer
tv 9 Tv card demuxer (?)
avi 3 AVI demuxer (AVI files, including non interleaved files)
asf 6 ASF demuxer (ASF, WMV, WMA)
mkv 31 Matroska demuxer
realaudio 32 Realaudio demuxer (handles old audio only .ra files)
mov 7 Quicktime/MP4 demuxer (Handles Quicktime, MP4, 3GP)
gif 28 GIF demuxer
ogg 18 Ogg demuxer
aac 39 AAC demuxer (Raw AAC files )
…………
…………
解码,当分离器正确的从封包中取出视频轨道和音频轨道以后,播放器识别文件编码格式,然后调用相应的解码器进行解码。这个过程就像,彩带上的内容可能是用英语、法语、德语写的,你看不懂,怎么办?那就找一个懂这门外语的给你翻译成汉语。这个翻译过程就是解码。我们用MPlayer看看有哪些解码器。
命令:mplayer –vc help //仅仅是视频的编码格式
结果:346 video codecs
Available video codecs:
vc: vfm: status: info: [lib/dll]
xvid xvid working Xvid (MPEG-4) [libxvidcore.a]
divx vfw working DivX ;-) (MSMPEG-4 v3) [divxc32.dll]
mpeg4 vfw working Microsoft MPEG-4 v1/v2 [mpg4c32.dll]
ffvp8 ffmpeg working FFmpeg VP8 [vp8] VP8在这儿
mpeg12 libmpeg2 working MPEG-1 or 2 (libmpeg2)
ffflv ffmpeg working FFmpeg Flash video [flv]
ffh264 ffmpeg working FFmpeg H.264 [h264]
…………
…………
命令:mplayer –ac help //音频的
结果:158 audio codecs
Available audio codecs:
ac: afm: status: info: [lib/dll]
ffflac ffmpeg working FFmpeg FLAC audio [flac]
ffape ffmpeg working FFmpeg Monkey's Audio [ape]
pcm pcm working Uncompressed PCM
divx acm working DivX audio (WMA) [divxa32.acm]
ffwmav1 ffmpeg untested DivX audio v1 (FFmpeg) [wmav1]
ffwmav2 ffmpeg untested DivX audio v2 (FFmpeg) [wmav2]
mp3 mp3lib working mp3lib MPEG layer-2, layer-3
mpg123 mpg123 working MPEG 1.0/2.0/2.5 layers I, II, III
mad libmad working libMAD MPEG layer 1-2-3 [libmad]
…………
…………
渲染,解码器将音频视频翻译完毕,由渲染器输出的过程。可以理解为画面出来了,显示在屏幕上,声音处理好了,从喇叭出来的过程。这个过程很有意思,我们可以作很多干涉,以取得某些特殊的效果(详见mplayer -vf help)。

待续……


_________________
I am who I am.
代码:
 ________
( Cool )
 --------
        o    ^__^
          o  (oo)\_______
             (__)\       )\/\
                 ||----w |
                 ||     ||


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 音视频编码简介
帖子发表于 : 2010-07-31 14:59 
头像

注册: 2010-03-17 17:03
帖子: 445
地址: 北京市海淀区
送出感谢: 0 次
接收感谢: 0 次
也许你是对的 不过我不大理解


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 音视频编码简介
帖子发表于 : 2010-08-01 9:44 

注册: 2009-06-01 23:18
帖子: 25
系统: ubuntu gnome 16.04
送出感谢: 0 次
接收感谢: 2
楼主有当科普作家的潜质,赞!


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 音视频编码简介
帖子发表于 : 2010-08-20 10:51 

注册: 2010-08-20 10:43
帖子: 1
送出感谢: 0 次
接收感谢: 0 次
最近刚接触mplayer和音视频编码,我是在Dos命令行方式下执行mplayer,不过你的介绍对我帮助还蛮大的,对于音视频编解码的比喻也让人立刻能明白这个过程中的主要步骤,期待你更多的分享,谢谢. :em01


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 音视频编码简介
帖子发表于 : 2010-08-20 11:32 
头像

注册: 2010-04-23 20:40
帖子: 1950
地址: 浙江·杭州
系统: Arch Linux
送出感谢: 2
接收感谢: 31
期待你“待续”的部分 :em01


_________________
我是 Giumo Clanjor(哆啦比猫/兰威举)
Where there is a hacker, there is art. | Develop for Developers. (C & perl5)
博客 | Clanjor Prods.
类 C 语言到 brainfuck 编译器


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 音视频编码简介
帖子发表于 : 2010-08-20 13:40 
头像

注册: 2008-04-26 12:41
帖子: 11000
送出感谢: 11
接收感谢: 38
:em09


_________________
[新手必读]wubi安装常见问题(FAQ)
[分享]装双系统的同学必看——Windows与Linux系统共享交换分区的方法
kde下唯美的暗黑内透主题(无需编译)
无穷老机上的Trinity Desktop Environment


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 6 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译