首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > 多媒体 >

window media 编码器是如何实现的

2013-01-09 
window media 编码器是怎么实现的?最近用windows media format sdk 编码,捕捉采集卡的数据,然后writesampl

window media 编码器是怎么实现的?
最近用windows media format sdk 编码,
捕捉采集卡的数据,然后writesample。

在低分辨率下能正常工作,可是到了1280X720下,因为随着图像尺寸的变大,编码时间变长了,导致内存溢出。

可是用window media 编码器 在1280X720下确能正常的工作。

请问windows media 编码器是怎么实现编码的?

我的程序在运行时只有两个主要方法 
一个是采集卡的回调  在其中保存图像buf
另一个是线程函数 一直从buf 提前数据 writesample

求指教!



[解决办法]
编码时间变长可以理解,内存溢出真心不理解。这filter怎么写的。。
[解决办法]
把内存做成链表或环形缓冲,如果采集太快,链表会越来越长,长到一定程度,或者暂停采集,或者清空链表。
[解决办法]
链表要加锁
[解决办法]
"消化没有采集快 "
丢失是必然的
解决的方法也有,一个线程采集,多开几个工作线程进行转码,不过逻辑上要把握好。

还有个方法,就是读出的来视频先保存在一个临时文件里,转码线程从这个文件里读数据,转码,再保存到另外文件里。类似边下载边播放。

对文件的读写比多线程对内存的操作稍容易一些,因为多线程还要考虑视频的顺序。你两个方法都试试看。
[解决办法]
其实临时文件就是个虚拟内存的文件,参考Windows核心编程。只不过不占用物理内存,视频数据再大也没关系,只要硬盘够用就可以。
[解决办法]
理论上windows media format sdk也是用 windows media encoder 核做编码,不应该有很大差别。
建议楼主确认一下同为 1280 x720 输入的情况下,输出分辨率,frame rate , bitrate。 

另外跑media encoder的机器一定要好,跟老板说一下不要太抠门儿window media 编码器是如何实现的

热点排行