海洋预报电视节目全流程自动化实现
引言
随着国家在防灾减灾方面越来越重视,海洋预报的重要性日益凸显。而传播海洋预报最重要一环便是电视节目。传统海洋预报节目的制作需要人工获取提炼数据,并手动生成、拷贝视频,效率低易出错,工作重复繁琐。自动化系统则应运而生。
本单位负责制作与发布中国南海区海洋预报,与江门市的合作中,就包括了帮助制作江门市海洋预报电视节目的内容。
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 结语
综上所述,上述系统可以实现海洋预报电视节目全流程的自动生成和传输,确保时效,提高效率,降低出错几率,为海洋预报电视节目的顺利播出提供了坚实保障。