【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.
即IDL对MPEG支持需要一个特殊的许可,需要联系IDL总部进行许可登记才可使用。(注:这里的MPEG指的是MPEG-1和MPEG-2)。
为了更加方便的让IDL用户进行视频操作,自IDL8.2版本新增了IDLffVideoWrite对象,同时废弃了上文中提到的4个MPEG_*函数。
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
生成视频所用图片(来自网络):
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了