【IDL】IDL 8.2 新增视频对象IDLffVideoWrite用法示例

IDL8.0及之前版本中,创建视频需要用到如下函数:

  • MPEG_CLOSE
  • MPEG_OPEN
  • MPEG_PUT
  • MPEG_SAVE

在这些函数的帮助文档中,均有如下提示:

Note:MPEG support in IDL requires a special license. For more information, contact your ITT Visual Information Solutions sales representative or technical support.

IDLMPEG支持需要一个特殊的许可,需要联系IDL总部进行许可登记才可使用。(注:这里的MPEG指的是MPEG-1MPEG-2)。

为了更加方便的让IDL用户进行视频操作,自IDL8.2版本新增了IDLffVideoWrite对象,同时废弃了上文中提到的4MPEG_*函数。

IDLffVideoWrite对象包含以下几种方法:

方法

功能描述

IDLffVideoWrite::Init

初始化对象,创建视频文件

IDLffVideoWrite::AddVideoStream

为新建文件添加视频流

IDLffVideoWrite::AddAudioStream

为新建文件添加音频流

IDLffVideoWrite::GetCodecs

返回可能用到的音频或视频编码

IDLffVideoWrite::GetFormats

返回可以创建的视频文件格式

IDLffVideoWrite::GetStreams

返回一个结构体数组,描述文件中包含的媒体流属性

IDLffVideoWrite::Put

将数据写入视频文件

IDLffVideoWrite::SetMetadata

可以在视频文件中嵌入元数据,如artist(艺术家)等

IDLffVideoWrite::Cleanup

结束并关闭文件,调用此方法前视频文件是不可播放的

 

可以使用GetFormats获取可以创建的视频文件格式:

IDL> ovid = idlffvideowrite('D:\temp\temp.mp4')

IDL> print, ovid.GETFORMATS(/long_name), format = '(1A)'

AVI format

FLV format

GIF Animation

raw MJPEG video

MP4 format

Flash format

WAV format

WebM file format

 

下面通过一个示例介绍如何利用IDLffVideoWrite对象进行视频文件的创建。

功能介绍:通过对话框选择多幅具有相同维度的JPG图片文件,生成MP4(根据需要自行设置)视频文件。

PRO CREATEVIDEO
  COMPILE_OPT idl2
  CATCH, error_status

  IF error_status NE 0 THEN BEGIN
   !null = DIALOG_MESSAGE(!error_state.MSG)
   CATCH, /cancel
   RETURN
  ENDIF
 
  ;多选jpg图片文件,必须保证所有图片的行数和列数一致
  infilelist = DIALOG_PICKFILE(/multi, path = 'E:\Pictures\Nature')

  ;设置输出路径,根据需要修改
  file = 'D:\temp\test_video.mp4'

  IF N_ELEMENTS(infilelist[0]) LT 1 THEN BEGIN
   CATCH, /cancel
   RETURN
  ENDIF

  N_file = N_ELEMENTS(infilelist)

  ;根据图片维度确定视频长宽
  r = QUERY_IMAGE(infilelist[0], dimensions = dims)
  width = dims[0]
  height = dims[1]

  ;设置fps,根据需要设置,fps越大,图片切换越快
  fps = 1

  ;创建对象,并初始化视频流媒体
  oVid = IDLFFVIDEOWRITE(file)
  vidStream = oVid.ADDVIDEOSTREAM(width, height, fps)

  ;输入视频内容
  FOR i = 0, N_file-1 DO BEGIN
   time = oVid.PUT(vidStream, READ_IMAGE(infilelist[i]))
  ENDFOR

  ;关闭对象
 oVid.CLEANUP
END

 

生成视频所用图片(来自网络): 

posted @   ENVI-IDL技术殿堂  阅读(161)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示