如果在XP&Win7平台上,我要将一段视频截成若干时间单元(30秒)的图片,从编程角度上考虑,我应该要学哪些方面的知识。以前略微接触过VB,现在几乎是零,恳请您的回答?第一次提问,我需要的是学习计划。没有正规培训,只是业余爱好。期望越详细越好。
 

解决方案 »

  1.   

    http://download.csdn.net/detail/veron_04/2859507
      

  2.   

    1、Vista和Windiws7系统下可以通过普通热键PrtSc抓取到视频图像帧,非常简单。
    2、XP及以下的系统、Windows8 需要通过DirectX抓取视频图像帧。微软不知怎么搞的,过分强调win8的平板功能,结果丢掉了windows本身的很多功能。
    avi to bmp(bmp to avi)开源的例子
      

  3.   

    还是windows7漂亮,Windows8的窗口太丑陋。
      

  4.   

    这个功能说起来简单,实际上要花的工夫是很不少的.要完成你的要求的话至少要写一个基本成型的视频播放器框架了.因为要完成的事情有以下几项:一,根据文件头找到解码器;二,使用解码器将视频流与音频流解码;三,将每一帧视频绘到指定的设备上;四,同步播放音频.这已经是一个标准的视频播放器最简框架了.而你的功能里,就是在第三步那里取30秒的帧的图片并保存.建议你使用ffmpeg这个开源组件来帮助你,它有提供EXE形式的命令行工具,好象可以进行视频帧提取.
      

  5.   


    记录帧或者所谓“记录帧的变化”事实上是一回事。无论什么压缩算法,只要它不是没用的,必然能够还原出每一帧的图像,因为这是用户播放视频所需要的。所谓“播放视频的过程中,重新抓取视频播放数据”只是因为你从一个业余用户的角度看,把decode的过程视作一个黑箱而已。但是基本常见的视频格式(有损/无损),都可以有公开的decoder,少数像real这样受专利保护的算法,事实上因为这一点,而逐渐被边缘化。lz如果感兴趣,可以去codeproject、github、sourceforge去寻找decoder。
      

  6.   


    老马说的基本是对的。当然你要说什么语言比较好,我觉得C语言比较好。因为出于性能的考虑,绝大多数的encoder/decoder和相关算法的讨论,都是基于C(C++)语言的,如果你有C语言的基础,看这样的文章/例程会轻松一些。我想,大学里面学的基础的东西还是有用的。比如说像傅里叶变换,它是信号处理的最常见的算法,无论是2d的jpeg还是3d的mpeg4算法(以及很多类似的衍生算法)都运用到,就要你对于高等数学要能掌握和理解。这不是“培训班”能帮助你的。