社区
图形处理/算法
帖子详情
高手出招:有没有人用过DivX来加压数据啊?
堆堆
2003-02-18 11:13:10
有没有人使用过DivX来写程序啊,我使用AVIStreamWrite就可以写出DivX的AVI文件,不过我使用ICCompressBegin就不能使用了!!
...全文
125
11
打赏
收藏
高手出招:有没有人用过DivX来加压数据啊?
有没有人使用过DivX来写程序啊,我使用AVIStreamWrite就可以写出DivX的AVI文件,不过我使用ICCompressBegin就不能使用了!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
杂家老周
2003-02-21
打赏
举报
回复
压缩引擎有很多种,XVID是一种,如果是DIVX公司的,可以有DIV3,或DIV4,但不能用DIVX
堆堆
2003-02-21
打赏
举报
回复
为什么是用mmioFOURCC('X', 'V', 'I', 'D'),而不是mmioFOURCC('D', 'I', 'V', 'X')呢?我压缩的时候是用的2021026148,不是mmioFOURCC任何一个值。
堆堆
2003-02-20
打赏
举报
回复
给分就要结帖了,先记上: duwenyong(啸海) 50分
^_^
堆堆
2003-02-20
打赏
举报
回复
代码是可以通过啦,不过好象没有压缩,解压也没有反应,请问是不是又有什么要注意的东西吗?
我先给分
杂家老周
2003-02-20
打赏
举报
回复
剩下的50分就给我了,呵呵
Codec::Codec(BITMAPINFOHEADER *bih)
{
HRESULT h;
this->hic = 0;
this->videoMode = VIDEO_MODE_ERROR;
if(bih)
{
if(userset)
{
bih->biCompression = mmioFOURCC('X', 'V', 'I', 'D');//你自己也可以在这里设置,但那四个字母要注意不能错,DIVX的标计有DIV3或DIV4.
}
this->hic = ICOpen(mmioFOURCC('V', 'I', 'D', 'C'),
bih->biCompression,
ICMODE_FASTDECOMPRESS);
if(this->hic != 0) {
ZeroMemory(&this->in_bih, sizeof(BITMAPINFO));
ZeroMemory(&this->out_bih, sizeof(BITMAPINFO));
memcpy(&this->in_bih.bmiHeader, bih, sizeof(BITMAPINFOHEADER));
memcpy(&this->out_bih.bmiHeader, bih, sizeof(BITMAPINFOHEADER));
out_bih.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
out_bih.bmiHeader.biBitCount = 24;
out_bih.bmiHeader.biCompression=0;
h = ICERR_OK;
if(h == ICERR_OK) {
h = ICDecompressQuery(this->hic, &this->in_bih, &this->out_bih);
this->out_bih.bmiHeader.biSizeImage = out_bih.bmiHeader.biWidth*out_bih.bmiHeader.biHeight*out_bih.bmiHeader.biBitCount/8;
h = ICDecompressBegin(this->hic, &this->in_bih, &this->out_bih);
this->videoMode = VIDEO_MODE_RGB24;
if(h != ICERR_OK) {
MessageBox(NULL, "Can't Begin Decompression", "", MB_OK);
this->hic = 0;
}
}
else {
MessageBox(NULL, "Codec not working!", "", MB_OK);
this->hic = 0;
}
}
else {
MessageBox(NULL, "Can't find any appropriate Codec!", "", MB_OK);
this->hic = 0;
}
}
else {
MessageBox(NULL, "Codec : wrong input parameters!", "Error", MB_OK);
}
}
int Codec::Decompress(char *in, long in_size, char *out)
{
HRESULT h;
if(this->hic) {
this->in_bih.bmiHeader.biSizeImage = in_size;
if(in_size == 0) {
h = ICDecompress(this->hic, ICDECOMPRESS_NULLFRAME,
&this->in_bih.bmiHeader, (void *) in,
&this->out_bih.bmiHeader, (void *) out);
}
else {
h = ICDecompress(this->hic, ICDECOMPRESS_NOTKEYFRAME,
&this->in_bih.bmiHeader, (void *) in,
&this->out_bih.bmiHeader, (void *) out);
}
}
return 1;
}
duwenyong
2003-02-19
打赏
举报
回复
fccHandler=2021026148;
BITMAPINFOHEADER biIn,biOut;
biIn.biSize = sizeof(BITMAPINFOHEADER);
biIn.biBitCount =24;
biIn.biCompression=BI_RGB;// standard RGB bitmap
biIn.biClrUsed = biIn.biClrImportant =0;
biIn.biPlanes = 1;
biIn.biXPelsPerMeter = biIn.biYPelsPerMeter = 0;
biIn.biWidth = WIDTH;
biIn.biHeight =HEIGHT;
biIn.biSizeImage = WIDTH*HEIGHT*(COLORBIT/3);
memcpy(&biOut,&biIn,40);
biOut.biCompression=fccHandler;
hic=ICOpen(mmioFOURCC('V','I','D','C'),fccHandler,ICMODE_COMPRESS);
if(!hic)
{
AfxMessageBox("ICOpen error!");
return 0;
}
DWORD error;
if ((error=ICCompressBegin(hic, (LPBITMAPINFO)&biIn,(LPBITMAPINFO)&biOut))!=ICERR_OK)
{
return FALSE;
}
duwenyong
2003-02-19
打赏
举报
回复
不可能不行的,我用了N次了。
可能是中间一些参数你设错了,很有可能 是in_format, out_format这两个,你再仔细看看啦
堆堆
2003-02-19
打赏
举报
回复
用DirectShow如何现实啊?我没有用过DirectShow来压缩,写出例子我先给分
堆堆
2003-02-19
打赏
举报
回复
难道DivX不能用ICCompressBegin来压缩,还是我的代码有问题:
m_HIC=ICOpen(ICTYPE_VIDEO, codec, ICMODE_COMPRESS)
...
...
...
ICCompressBegin(m_HIC, &in_format, &out_format)
我试了codec=2021026148、codec=MAKEFOURCC('D','I','V','X')都不行
是参数的问题吗?
jian
2003-02-19
打赏
举报
回复
我现在使用DirectShow来重压视频,你也可以试试,DirectX SDK非常好用
c0der
2003-02-19
打赏
举报
回复
我则么可以?你说的清楚一点
Android平台基于Vitamio的开源播放器( 源代码)
Android平台基于Vitamio的开源播放器 ...•
div
x/xvid •wmv •flv •ts •rmvb •mkv •mov •m4v •avi •mp4 •3gp 依赖Vitamio,下载最新的Vitamio: https://github.com/yixia/VitamioBundle
解决OpenCV: FFMPEG: tag 0x58564944/‘
DIV
X‘ is not supported with codec id 12 and format ‘mp4 / MP4 (MPE
解决OpenCV: FFMPEG: tag 0x58564944/‘
DIV
X’ is not supported with codec id 12 and format ‘mp4 / MP4 (MPEG-4 Part 14)’ 解决OpenCV: FFMPEG: fallback to use tag 0x7634706d/‘mp4v’ 报错代码 fourcc=cv2....
解决:OpenCV: FFMPEG: tag 0x58564944/‘
DIV
X‘ is not supported with codec id 13 and format ‘mp4 / MP4 (MP
将保存的格式从".mp4"改为".avi"格式。
xvid和
div
x的故事
XVID和
DIV
X一样,是转换格式用的一种编码方式.,是Mpeg4的不同的编码方式,都是可变码速率的。可以看到它们的拼写正好是完全对称的,也就是
DIV
X反过来拼就是XVID。这个应该不是巧合,中间似乎表达了XVID对
DIV
X很大的...
Div
X播放器源代码深度解析与实践
简介:
Div
X播放器是一款用于播放高压缩比视频的软件,源代码提供了深入解析...研究
Div
X播放器的源代码,开发者不仅能提升编解码技术,还能理解多媒体处理的底层原理,甚至开发出更高效、更符合用户需求的播放...
图形处理/算法
19,469
社区成员
50,678
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章