首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

编程怎么实现视频按时间单元截取出来成为逐一图像

2013-03-28 
编程如何实现视频按时间单元截取出来成为逐一图像?如果在XP&Win7平台上,我要将一段视频截成若干时间单元(3

编程如何实现视频按时间单元截取出来成为逐一图像?
如果在XP&Win7平台上,我要将一段视频截成若干时间单元(30秒)的图片,从编程角度上考虑,我应该要学哪些方面的知识。以前略微接触过VB,现在几乎是零,恳请您的回答?第一次提问,我需要的是学习计划。没有正规培训,只是业余爱好。期望越详细越好。
 
[解决办法]
实际上,视频文件并不像一些人想象的那样是由一系列帧图像数据组成的。为了压缩文件大小,文件往往是按时间轴记录逐帧之间的变化。

因此,一种通用的方法是,在播放视频的过程中,重新抓取视频播放数据。甚至有些格式转换工具都是这样做的。

[解决办法]
这个功能说起来简单,实际上要花的工夫是很不少的.

要完成你的要求的话至少要写一个基本成型的视频播放器框架了.

因为要完成的事情有以下几项:

一,根据文件头找到解码器;

二,使用解码器将视频流与音频流解码;

三,将每一帧视频绘到指定的设备上;

四,同步播放音频.

这已经是一个标准的视频播放器最简框架了.

而你的功能里,就是在第三步那里取30秒的帧的图片并保存.

建议你使用ffmpeg这个开源组件来帮助你,它有提供EXE形式的命令行工具,好象可以进行视频帧提取.
[解决办法]
先要抓到关键帧, 然后,其实也不必然后了, 关键帧就够了, 你也不会要求时间精确到几十毫秒吧
[解决办法]

引用:
实际上,视频文件并不像一些人想象的那样是由一系列帧图像数据组成的。为了压缩文件大小,文件往往是按时间轴记录逐帧之间的变化。

因此,一种通用的方法是,在播放视频的过程中,重新抓取视频播放数据。甚至有些格式转换工具都是这样做的。


记录帧或者所谓“记录帧的变化”事实上是一回事。无论什么压缩算法,只要它不是没用的,必然能够还原出每一帧的图像,因为这是用户播放视频所需要的。所谓“播放视频的过程中,重新抓取视频播放数据”只是因为你从一个业余用户的角度看,把decode的过程视作一个黑箱而已。

但是基本常见的视频格式(有损/无损),都可以有公开的decoder,少数像real这样受专利保护的算法,事实上因为这一点,而逐渐被边缘化。

lz如果感兴趣,可以去codeproject、github、sourceforge去寻找decoder。

热点排行