openFrameworks全系列 第四篇:视频

 视频是多媒体艺术交互的基础,围绕着视频内容,结合投影机等硬件设备,已经打造出了越来越绚丽夺目的视觉盛宴:全息,3dmapping,大屏幕等,不仅要让你看,而且要想着法让你好看。

一:播放一个视频

二:控制视频的播放

• stop()  停止视频

• setPaused( bPause )  根据bool值的真假设置暂停或播放。

• setPosition( pos )  pos类型是float型,取值范围[0, 1],设置视频的播放位置。

• setFrame( frame )  设置具体的某一帧,frame是int型,取值范围是0 to video. getTotalNumFrames() - 1.

• getCurrentFrame() 获取当前帧的数值。

• getTotalNumFrames() 获取视频的总帧数。

• getDuration() 获取视频的总秒数,float类型。

• isLoaded() 判断视频是否加载成功。

• isPaused() and isPlaying() 判断是暂停状态或播放状态。

• getIsMovieDone()判断视频播放完毕。

• setSpeed( speed ) 设置视频播放的速率,比如:1.0是正常播放,2.0是快进播放,-1.0是从后到前倒着播放。

• getSpeed() 获取播放速率。

• The setLoopState( state ) 设置视频播放循环状态,有三种。

OF_LOOP_NONE: 播完结束。

OF_LOOP_NORMAL: 播完后,又重新开始循环,这是默认的播放方式。

OF_LOOP_PALINDROME:也是无限循环,前后衔接比NORMAl状态更平滑。

• The getLoopState()  获取当前循环类型。

三:根据视频帧获取像素的颜色

ofPixels pixels = video.getPixelRef(); 获取像素值,然后拷贝存储到pixels中,

推荐使用ofPixels &pixels = video.getPixelRef();使用指针,不用拷贝数据,操作快速,但是获取不到r,g,b数值,画面是黑色的,这个好像是 openFrameworks 0.9.6版本的bug

通过对像素级别的操作,可以改变画面的颜色,排列分布,出现扭曲,拉伸等不同的表现形式。

四:获取实时摄像头

五:利用图片序列帧生成视频

这里引入一个ofxImageSequence插件,加载上面的骑马图片序列帧,运行后可以看到一个骑马的动态视频。

各个框架实现原理不尽相同,但我想最基本的逻辑是相通的,像Qt里是用定时器播放一张张序列帧图片,根据定时器和播放序列帧的速度,可以调节视频的快慢。

在实际工程开发中,用序列帧代替原始视频的一个最大好处是,可以用png做成背景透明的视频叠加在其他的界面上,而不至于有黑色的底框。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值