ffdshow如何进行H264编码

kimkorj 2011-10-27 04:57:47
希望利用ffdshow、directshow进行视频的压缩与传输,在graphEdit下建立验证性filter graph如下:视频采集filter-》ffdshow编码filter-》ffdshow解码filter-》视频显示filter,但是查看‘ffdshow编码filter’时发现没有H264编码器,请问如何用ffdshow进行H264编码?请各位指教~
...全文
462 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
greenfloweryeahnet 2011-10-31
  • 打赏
  • 举报
回复
我这里也有问题阿:
客户端用CSocket接收服务器端的发送的H264流媒体信息,刚开始可以,多次Receive后返回10054错误

主要有两个问题:
1>如果每次receive完后,sleep(1)后,客户端用CSocket接收服务器端的发送的H264流媒体信息,刚开始可以正确,多次Receive后返回10054错误,就是服务器端关闭了连接,感觉好像自己发送receive请求的速度达不到服务器端的要求.
2>如果每次receive完后,不用sleep(1)后,客户端到可以一直receive,不会返回10054,但问题是刚接收的数据可以正确解析,但以后接收到的长度信息解析出来就出错了,好像自己发送receive请求的速度超过了服务器端的要求

因为服务器端的数据发送软件是厂商提供的EXE,自己没有代码,如果解决的话,除了这一百分,还会有其它的言谢,如果需要服务器端的发送软件和自己写的客户端代码,请加我QQ:1214615347,可以大家一起讨论下

客户端代码如下:

AfxSocketInit(NULL);
CSocket sockClient;
sockClient.Create();
sockClient.Connect("127.0.0.1", PORT);

char sendbuf[38]=........;//走TCP给服务器发送连接信息
sockClient.Send(sendbuf,38);

unsigned short ltemp;
sockClient.Receive(<emp, 2);//接收确认包长度

byte* data=new byte[ltemp];
sockClient.Receive(data, ltemp);//接收确认包提供媒体信息

int j=0;

unsigned short mylen=0;


while((j++)<1500)
{

int error=sockClient.Receive(&mylen, 2); //Get length

printf("sock return %d;\n",error);

int geterror=GetLastError();

printf("sock get last error %d;\n",geterror);

printf(" %d original length is %d;\n",j,mylen);

mylen=(mylen<<8)+(mylen>>8);

printf("length is %d;\n",mylen);


byte* data2 = new byte[mylen];

sockClient.Receive(data2, mylen);

int geterror2=GetLastError();

printf("sock get 2 last error %d;\n",geterror2);

printf("pt is %d;\n",data2[1]);

//..................接收的数据处理

delete[] data2;
Sleep(1);//如果不做延时的话,接收完几笔数据后,就会出现接收到的长度信息不正确

}//1500 times



//发送退出包
pt->RequestData=2882338816;
sockClient.Send(sendbuf,38);

sockClient.Close();
kimkorj 2011-10-28
  • 打赏
  • 举报
回复
编译X264后生成一个lib文件,一个X264.exe文件,请问怎么使用呀?如何添加进ffdshow?
kimkorj 2011-10-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zoulie 的回复:]

ffdshow用的是x264,你自己封装下也可以
[/Quote]
X264的源代码拿到了,格式是tar.bz2的,是要在Linux下,或者windows下的minGW中编译么?不知道该怎么理解封装的意思,请赐教,谢谢你的回答。
kimkorj 2011-10-28
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 vansbluge 的回复:]

http://ffdshow-tryout.sourceforge.net/download.php
里的安装文件是完整版的,支持H264编解码
[/Quote]
请问你下载的是那个文件呀?我从那个网站下的,安装完还是不行。。
kimkorj 2011-10-28
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 vansbluge 的回复:]

http://ffdshow-tryout.sourceforge.net/download.php
里的安装文件是完整版的,支持H264编解码
[/Quote]
有点事儿,稍后回来结贴~非常感谢~
kimkorj 2011-10-28
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 vansbluge 的回复:]

http://ffdshow-tryout.sourceforge.net/download.php
里的安装文件是完整版的,支持H264编解码
[/Quote]
谢谢你啊~我再看看,难道是安装过程出问题了~
vansbluge 2011-10-28
  • 打赏
  • 举报
回复
http://ffdshow-tryout.sourceforge.net/download.php
里的安装文件是完整版的,支持H264编解码

kimkorj 2011-10-28
  • 打赏
  • 举报
回复
也就是说只有自己编译源文件才能选择编译上h264的编码功能,直接下的安装文件就不能扩展对H264编码的支持了?
kimkorj 2011-10-28
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 vansbluge 的回复:]

ffdshow里并不直接使用x264项目出来的库, 而是ffdshow修改过的,在ffdshow工程目录下

ffdshow\trunk\src\codecs\x264执行里面的Makefile
[/Quote]
我的ffdshow是下载的安装包,并不是工程编译来的,找不到这个文件,
我的ffdshow下载网址是http://ffdshow-tryout.sourceforge.net/download.php,好像只提供安装包的下载啊。。
vansbluge 2011-10-28
  • 打赏
  • 举报
回复
ffdshow里并不直接使用x264项目出来的库, 而是ffdshow修改过的,在ffdshow工程目录下

ffdshow\trunk\src\codecs\x264执行里面的Makefile
zoulie 2011-10-27
  • 打赏
  • 举报
回复
ffdshow用的是x264,你自己封装下也可以
kimkorj 2011-10-27
  • 打赏
  • 举报
回复
大家帮帮忙呀~在线等~~
H264编码器标准草案发布时,很多人都觉得H.264太复杂,不宜实用。眨眼间3年过去了,以往的论断、疑惑被如今的现实冲洗的干干净净。一张7.92G的1小时50分的av,分辨720*480,用Ahead dvd ripper,现在用最新的ffdshow h264编码(4线程,码率1500k),需要1小时10分左右。cpu吃不完,占用率在50%左右。 采用H.264编码,将视频文件压缩转换为MP4/3GP/F4V/AVI格式.绿色软件,使用方便,压缩速度快,图像质量好. 本软件使用Windows系统注册解码器进行视频解码.Windows Media Player能够播放的视频格式,本软件都可以进行压缩.对于不支持的视频格式,可以安装解码包,如ffdshow, 影音风暴等. H264编码器功能: 1、四路视频实时预览,也可利用Web界面对多路直播信号远程集中管理进行配置管理, 2、领先的码率控制技术(CBR/VBR),使其能轻松运作于280Kbps~ 6000Kbps之间。 3、可变的GOP结构:I,IP,IBP,IBBP。 4、PCM音频信道。 5、指纹式植入的视频流的音频处理技术,使得视音频实时同步。 6、支持输出文件格式:FLV,MPEG-4,MPEG-2及HTTP,RTSP,UDP网络协议。 7、支持VBR及CBR压缩方式。 8、支持多种分辨率:FULL,D1等; 9、可将录制FLV格式文件再转换为MP4格式文件进行存储; 10、支持自动录制和手工录制; 11、能设定自动录制计划,时间设定为某月某周某日时分秒,自动进行录制; 12、每路直播信号,能设定不同时段的定时任务; 13、可设定录制文件保存路径; 14、支持网络存储,如NASNAS SAN等网络环境。 H264编码器截图:
首先,FFDSHOW消耗CPU功率比原来的DivX编码方式少,甚至最高的后处理。同时后处理似乎给优良的品质效果,并允许超过原有的DivX编解码器的配置。它甚至可以全自动减少后处理,如果你的CPU是挤破头。噪音过滤器增加了一个rasterising效果图片 - 可能在某些情况下非常有用。 alpha版本还包括MPEG - 1和MPEG - 2文件(如VCD和SVCD影片),其中作品相当该死的实验播放。唯一的问题是,MPEG - 2播放可以直接从CD SVCD的剪辑,但需要使用VCDGear首先要提取的视频到硬盘。 FFDSHOW MPEG - 4视频解码器的特点: - 各种压缩方法: MPEG - 4兼容(XVID,DIVX,DIVX 6的DivX 4,DivX的5 7 8,DIVX)使用libavcodec的或XviD DIVX 3兼容,MSMPEG4v2,MSMPEG4v1 WMV2 WMV1 / 7 / 8 H263,H263 ,H264 HuffYUV YV12色彩 MJPEG MPEG - 1 MPEG - 2,使用MJPEGtools项目mpeg2enc代码 MP3,AC3,DTS,E - AC3,AAC格式 SVQ3 Vorbis格式 Theora格式(不经常使用,格式是没有稳定尚未) 所有的Windows Media Video 9的支持编码器输出​​到ASF / WMV文件或AVI - 所有常用的编码模式:恒定比特率,固定量化,定质量,二阶段编码(取决于压缩机的功能) - libavcodec的和XviD的运动估计方法的详细选择 - 最小和最大I帧间隔 - 最小和最大的量化选择,量化型和格子libavcodec的量化选择 - 自适应量化(亦称屏蔽)使用libavcodec和XviD,消除单一系数 - 可选择的压缩开始和结束学分 - 两个曲线的第二个阶段二阶段编码压缩算法 - XVID开发 - 第二遍模拟:虽然不是很精确,还有助于调整先进的曲线压缩参数 - 能够使用libavcodec的内部传递代码 - 图像预处理与FFDSHOW的图像过滤器(必须安装最新的FFDSHOW版本) - 图在编码过程中:如果你的编码方案未提供 - B帧支持:从一到8个连续的B帧 - 支持MPEG - 4 quarterpel和GMC - 可选择的隔行编码 - 减压 FFDSHOW的转换3943,3900 FFDSHOW转换: - 腾出空间用于添加更多的色彩FFDSHOW - 更新Libav - 更新pthreads的(CVS 20110710) - 修正了另一个DXVA的回归 - 更新Swscale - 64位的pthread库 - ffdshow的音频解码器的QT PCM变种(如三三两两)创建新格式“选项。他们以前如果未压缩的音频选项的一部分。 - 修正了一些色彩空间转换问题 - 更新了俄语翻译 - 在XP上安装的MANIFEST文件 - ICL12工程:清理和移动common_icl12.props所有共同属性 - VS2010的项目:清理 - 更新线程工具提示 - VS2010的项目: *清理额外的库 *修复makeAVIS文件,libfaad2 ff_wmv9项目 *重命名libmpeg2_ff一致性的项目文件 - 更新构建脚本 - 修正H.264 4:4:4 - 哈克,以防止与H.264 4:4:4的崩溃。色彩尚不支持。 - 更新黑名单 重要注意事项: - 一些杀毒软件一样的AVG“检测”在FFDSHOW木马之上。这是一个假阳性,有FFDSHOW建立无木马!

2,543

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧