posts - 34, comments - 90, trackbacks - 0, articles - 0

H.263 视频解码程序(TMN库)

Posted on 2008-08-28 16:31 猫头鹰 阅读(1960) 评论(0)  编辑 收藏 引用 所属分类: 视频学习之路

     前一段时间以MPEG2为基础研究了RTP协议,并且完成了在RTP上承载MPEG2 ES流的程序,本来是想编写一个在JRTPLIB上的MPEG2视频广播程序的。但是由于这段时间另外一个视频标准吸引了我,那就是H.263标准,MPEG2和H.263是由两个不同的标准制定组织制定的,MPEG2注重的是高质量(DVD大家都熟悉了吧,数字有线电视的高清大家向往吧),和MPEG2相反,H.263注重的是码率,因此它是可视电话的视频压缩标准,它可以在64Kb/s的ISDN线路上进视频聊天(现在的ADSL更爽啦)。呵呵,爽。

     就这样,这两天研究起了H.263, 如果大家对这方面熟的话,应该知道现在视频压缩的最新标准是H.264,但那个还比较新,资料都不多。而且,重要的是,他的算法复杂程序都快是H.263的3倍了。我研究视频不是想在PC上做实验,而是想最终交叉编译对ARM上运行的,因此,这种复杂程序我是接受不了的,所以,先选择H.263。至于H2.64,以后有兴趣再说吧,做产品和话就得买硬件方案了。

     研究结果发现,它比MPEG2的语化简单多了,整个标准才60多页。呵呵,很好,真的是够用就行,MPEG2比较下来还真复杂。在网上搜集了和H.263相关的文档和库,发现现在用得比较多的也就是两个,一个是FFMPEG2的,一个是TMN。FFMPEG2我就没有兴趣了,因为对FFMPEG2,完论是什么视频,它对上的接口基本上是一样的,原来研究MPEG2的时候已经研究过这个库了,不想重重复复去看(当然了,做产品不一样,你想,你只要会一种接口,什么格式都能解码,那就爽)。所以,选了TMN库,分别为TMN和TMNDEC,一个是编码的,一个是解码的, 这2天一直的研究这个库。

     TMNDEC库接口比较简单,而且它的DEMO做少量的修改就能在windows下运行(主要是学习方便)。我的网络硬盘里已经放了一个改写完成的完整代码,在VS2003下编译通过,压缩包里还有网上一哥们的自拍做测试(output.263)。为了使用方便,我又把工程重控制台程序改为对话框程序,并且对接口进了一些封装,方便以后使用。

     至于编码部份,TMN2.0库参数有点多, 我在网上找了个被别人改过的(当然,是老外),但他那个是依据1.6版的TMN改的,有点老了,作以接下来几天想对比对比,然后还是把2.0的库理解下来。此外,有果有时间,还打算做做下来两件事。

    1.研究RTP如果封装H.263数据
    2.把TMNDEC交叉编译一把,移植到我的ARM板上。PC编码并发送,ARM接收并解码,再显示在ARM的3.5寸屏上。

     些外我把一些相交的源码都已经传到我的新浪网络硬盘里了(cnitblog的空间太小了)。
     1.TMN DEMO的移植
     http://800.kukudongman.com/ContentPane.aspx?down=ok&filepath=cnitblog/fcode/ftmndec_org.rar

     2.TMN修改接口函数,并且改成为对话框方式后的代码(视频文路径我是硬编码进去的,你们要先修改路径)
     〈刚才网络硬盘错误以后再传吧〉

只有注册用户登录后才能发表评论。