海洋湖沼通报
    主页 > 期刊导读 >

海洋预报电视节目全流程自动化实现

引言

随着国家在防灾减灾方面越来越重视,海洋预报的重要性日益凸显。而传播海洋预报最重要一环便是电视节目。传统海洋预报节目的制作需要人工获取提炼数据,并手动生成、拷贝视频,效率低易出错,工作重复繁琐。自动化系统则应运而生。

本单位负责制作与发布中国南海区海洋预报,与江门市的合作中,就包括了帮助制作江门市海洋预报电视节目的内容。

1 需解决的问题

由于海洋预报每天都要更新,手动生成节目麻烦且不准时。为了不增加江门市气象局的工作量,更好的推进海洋预报电视节目制作工作,遂将电视节目制作的流程全部实现自动化,无需人工干预。

2 开发环境

在制作节目时,需要用到Edius,该软件基于windows操作系统,因此所有工具都是基于windows操作系统的。经考量,定为VS2010+.Net+C#+Win7+Edius

VS2010是Microsoft Visual Studio 2010的简称,是微软公司推出的开发环境,是目前最流行的Windows平台应用程序开发环境。

NET Framework是Microsoft公司开发的全面的、统一的编程模型,用于构建能给用户带来视觉震撼,能无缝和安全通信以及模拟一系列业务流程的应用程序。

C#是微软公司发布的一种由C和C++衍生出来的面向对象的编程语言、运行于.NET Framework和.NET Core之上的高级程序设计语言。

EDIUS非线性编辑软件专为广播和后期制作环境而设计,特别针对新闻记者、无带化视频制播和存储。

3 基本流程

3.1 配置文件

该软件的配置文件为xml,可在软件外直接修改参数,无需变更程序。需要包含的参数有:数据源FTP的IP、用户名、密码;模拟点击的坐标;成品视频发往路径等。

3.2 定时执行

本单位江门预报一般在下午两三点制作完毕。考虑时间上的冗余,定为每天下午四点更新视频。

使用Timer控件,每五分钟检查一次,若超过下午四点,则执行更新程序,否则继续检查。

3.3 获取并提取数据

通过ftp下载数据源xml文件,并提取相关区域的浪高水温数据。ftp功能包装成函数,代码更简洁。

3.4 生成图片

视频中会变化的是预报结果,以数字形式显示。需要生成对应的数字图片。

3.4.1 准备素材

一种是背景透明的白色数字(0-9)和小数点图片,长宽统一。另一种是带白色横杠的蓝色不透明底图。

3.4.2 分别生成前后两个数值图片

预报结果均为xxx至xxx形式,前后数值均由0-9和小数点组成。下面以生成前数值图片为例。(1)计算前数值图片的宽和高:提取某个前数值,获取该数值所含有的数字和小数点的数量,宽度为数量乘以小图片的宽,高不变。(2)拼接:以字符串形式遍历前数值的每个字符,将对应的0-9和小数点图片从左到右拼接起来,生成带数字且背景透明的前数值图片。(3)叠加蓝色底图:将前后数值图片叠加到中间带白色横杠的蓝色不透明底图上。需要每日替换的素材就准备好了。

3.5 模拟点击Edius

Edius需提前将基本视频准备好,需要剪切进去的素材图片文件名和路径也提前设置好。最终只需要按生成键即可输出视频。

3.5.1 获取Edius主窗体句柄

用spyxx寻找Edius主窗体的窗体名和类名。再用EnumWindows函数循环遍历所有窗体的窗体名和类名,并与Edius主窗体的比较。若都吻合,则找到Edius主窗体句柄,并返回。

3.5.2 获取Edius主窗体坐标

根据Edius主窗体句柄,用GetWindowRect函数获取Edius主窗体左上角在全屏幕中的坐标。

3.5.3 确定生成按钮的相对位置

在确定生成按钮位置时,不建议使用绝对位置,因为Edius主窗体有时会被人为移动,造成误差,使程序失灵。而在Edius主窗体左上角坐标的基础上再偏移,这时偏移量是确定的,不会因为窗体被移动而产生误差。

3.5.4 模拟点击

用SetCursorPos函数将鼠标移动到相应位置,再用mouse_event函数和MOUSEEVENTF_LEFTDOWN、MOUSEEVENTF_LEFTUP参数来模拟鼠标点击左键,生成最终视频。

3.6 移动视频

根据工作流程,还需要将视频传输至指定网络文件夹,以便集中处理。将目标文件夹共享,配置为映射硬盘,再用程序移动视频。

4 结语

综上所述,上述系统可以实现海洋预报电视节目全流程的自动生成和传输,确保时效,提高效率,降低出错几率,为海洋预报电视节目的顺利播出提供了坚实保障。