Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1534839
  • 博文数量: 114
  • 博客积分: 10010
  • 博客等级: 上将
  • 技术积分: 1357
  • 用 户 组: 普通用户
  • 注册时间: 2006-11-19 18:13
文章分类
文章存档

2010年(8)

2009年(9)

2008年(27)

2007年(62)

2006年(8)

我的朋友

分类: LINUX

2006-11-23 00:01:46

北京理工大学 20981班 陈罡
xvid从上次开始就已经深深吸引住我的视线,上一篇已经讲解了vs2005下面编译它的方法,很多朋友会问,这个xvid-core编译完毕后,如何使用呢?我就写了一个解码的程序(vs2005下编译通过),感兴趣的朋友可以看附件。下面的是一个在vs2005下面运行的效果图,加入了非常简单的双缓冲技术,感兴趣的朋友可以下载它的源代码包看看。
有几个的设置需要注意的地方:
(1)vs2005的additional include directories里面需要加入xvidcore-1.1.2\src这个目录,这样编译器才会找到#include "xvid.h"
(2)在additional lib directories里面加入xvidcore-1.1.2\bin目录,然后在additional dependicies里面加入libxvidcore.lib这样,就可以把xvid静态的链接到你的程序里面了。
(3)具体的解码过程十分简单,读入mpeg4数据,然后解一帧出来,然后显示,然后解下一帧。这个过程是循环往复的,直到到达文件末尾。而且从代码上看起来,到达文件末尾后,似乎解码器里面还有没有显示完的图像,所以又一个循环,去读取一下,就是后面的flush decoder里面的内容了。这也难怪,mpeg4本来就是那种预测型的视频编码,每一帧都是根据前一帧计算得出的,所以数据传入完了,还能继续预测出几帧的图像也是很正常的。
文件: XvidDecTest.rar
大小: 700KB
下载: 下载
很多朋友会问,你的那个test.mp4是怎么生成的,其实很简单,从网上下载一个yuv测试序列,注意必须是qcif的(176x144)的,然后进入xvidcore-1.1.2\build\win32\bin里面,找到xvid_encraw程序,然后运行它具体的命令行使用方式如下:
xvid_encraw -type 0 -i xxxxxx.yuv -w 176 -h 144 -o test.mp4
这时候会输出一大堆编码时候帧的信息。一会儿功夫就编码好了,注意这里是test.mp4,我们只需要把编码好的文件保存程test.mp4,然后把它放到与这个XvidDecTest.exe相同的目录下面,运行demo程序,就可以看到结果了。偶做了简单的双缓冲,其实还是太笨,而且也懒得直接显示yuv420的解码结果(yuv420转rgb的函数已经写好了),这个东西权当作练手的一个方法了。下次要开始像pocket pc上面移植了。
祝大家晚安。
阅读(6105) | 评论(4) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2008-12-29 20:25:35

非常感谢

ningxiangwei2008-05-15 00:28:54

你好,看了你的文章后,我也下载了你给的解码包想编译一下,但是发现里面没有工程文件,麻烦你能不能把完整的包发上来好参考,谢谢了

chinaunix网友2008-03-07 09:50:50

你好,向你请教一个问题。我看过你写的mpeg4的视频编解码方法,mpeg4的音频格式有很多种,如果编个mpeg4播放器,它的音频该怎么解码呢?是否要为每种音频格式提供一种解码库才能播放?