# 快速预报视频合成 **Repository Path**: ruocaoqing/FastFrocastVideo ## Basic Information - **Project Name**: 快速预报视频合成 - **Description**: 采用moviepy快速合成预报视频 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-10-16 - **Last Updated**: 2021-10-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 快速预报视频合成工具开发文档 ## 软件需求 满足日常合成预报视频需求,常规预报有日报,周报,重要天气预报,中期天气预报,年报等。需要根据预报文件(通常为 .txt )自动生成合成带语音和画面的预报视频。要求背景视频,气象图标等素材可替换风格。 ## 软件架构 ![软件架构](https://newblogimg.oss-cn-beijing.aliyuncs.com/2021/stracture.png) ### 视频与语音 语音合成采用讯飞语音合成 API,免费版每日有 500 次调用量,可使用免费公版发音人,默认为 “xiaoyan” 。 视频合成采用 Python 的 movipy 库,主要使用 `AudioFileClip` , `VideoFlieClip` , `TextClip` 的功能。 ### GUI界面 软件界面采用 Python 的 Pyside2 库配合 QTDesigner 设计。 #### 主界面 ![主界面](https://newblogimg.oss-cn-beijing.aliyuncs.com/2021/20210120124733.png) 主界面上方为快捷工具栏,单击“日报”可快速跳转到预报页的“日报”分页,单击“主题”可快速跳转到主题设置的主题界面设置页,单击“语音”可快速跳转到小工具页面的语音合成界面,单击“关于”弹出软件版本和作者信息,及反馈问题的快速连接。 主界面左侧为菜单栏,右侧为MDI窗口,单击“预报”在右侧展开预报子窗口“预报界面”,包含[日报](#日报界面),周报,月报,年报,中期天气预报,重要天气预报和[自定义模板](#自定义模板界面);单击“主题”在右侧展开主题设定子窗口,包含[视频主题设定](#视频主题设定界面),[气象图标设定水印](#气象图标设定水印界面),其他水印设定和[自定义视频主题](#自定义视频主题界面);单击“小工具”在右侧展开工具子窗口,包含[图片转视频](#图片转视频小工具)和[语音合成](#语音合成小工具界面);单击“设置”在右侧展开[设置界面](#设置界面)。 #### 日报界面 ![日报](https://newblogimg.oss-cn-beijing.aliyuncs.com/2021/20210120102627.png) 日报界面自动读取工作目录下的 `Style` 文件夹中的 `.json` 格式的风格文件,然后再手动编辑栏目下的表中更新表的第一列不变项的内容,此列内容一行就是一个 `Clip`。用户此时可以选择导入写有预报信息的 `.txt` 文件,或手动编辑各行内容。单击“帮助”显示 `.txt` 文件的格式规范(从风格 `.json` 文件中读入)和操作提示的弹出式对话框。若用户选择导入文件,则读取后文件的内容显示在手动编辑栏右侧一列。在手动编辑一项,用户可改变右侧一列的内容,不可改变左侧不变项的内容。右侧字符字数不宜超过60字,否则排版难看。点击编辑栏下方“生成预报文件”可生成 `.txt` 格式的预报文件,用于参考和保存。点击“合成”可按照风格文件,读取编辑栏内容自动合成语音,生成预报视频。输出进度和相关报错信息在“输出信息”一栏查看。 #### 自定义模板界面 ![自定义模板](https://newblogimg.oss-cn-beijing.aliyuncs.com/2021/20210120102733.png) 自定义模板界面可以选择自定义风格文件,功能与日报界面相似,区别在于日报月报等界面自动读取 `day.json` 后缀的的文件,而自定义界面要手动选择。`Style` 文件夹下有且仅有一个 `day.json` 后缀的文件作为默认项。 #### 视频主题设定界面 ![视频主题设定界面](https://newblogimg.oss-cn-beijing.aliyuncs.com/2021/20210120155935.png) 主题设定界面中,首先要设置画面的分辨率(默认为1920*1080,单位:像素 px)。在下方的 Tab 标签页中点选“视频主题设定”,输入主题名,点击“新建主题设定文件”则在 `Style` 目录下新建一个 `.json` 文件和同名文件夹,左侧为片段名(注意拼音不能重名),第二列设置背景文件路径。 第三列设置字幕字体,字体大小,字幕大小,颜色和位置 标准写法: { font:'SimHei', fontsize:40, color:'white', size:(1920, 360.0), method:'caption', align:'center', position:("center",'bottom') } 点击“导入水印设定文件”在右侧添加一列与水印同名的列以标识水印在此 `Clip` 内是否激活显示,和显示的位置,0表示不激活,(w位置,h位置)表示激活且设置位置。 点击导出则保存当前主题文件,点击导入主题文件测导入其他文件,可做修改后再次保存。注意保存的方式只认主题名,可能覆盖原文件,注意自行保存原文件。 预览区输入片段名,自动定位当前活动tab页的左侧列的片段 `Clip` ,输入帧数点击“预览”可在左下角窗口看到第几帧的视频截图预览,读取鼠标定位转化为px坐标一共调试参考。右侧可查看输出和报错信息。 #### 气象图标设定水印界面 ![气象图标设定水印界面](https://newblogimg.oss-cn-beijing.aliyuncs.com/2021/20210120160022.png) 操作类似视频主题设定,制定天气符号的水印和文件目录。注意参考国标文件,图标大小应保持统一且已裁剪过大小,合成代码中不提供大小剪裁。其他水印设定与气象图标水印操作类似,识别关键字工作,及预报字段中存在关键字就显示,不存在就不显示。 #### 自定义视频主题界面 ![自定义视频主题界面](https://newblogimg.oss-cn-beijing.aliyuncs.com/2021/20210120160601.png) 自定义视频主题界面操作类似视频主题设定,但是第二列为合成代码,需要一定moviepy基础。 #### 图片转视频小工具 ![图片转视频小工具](https://newblogimg.oss-cn-beijing.aliyuncs.com/2021/20210120121225.png) 提供从PNG图片转视频的小工具,用于合成气象图标的动画。需注意图片文件名前缀应与文件夹同名,且用 `_1` 字样的后缀标识顺序。 #### 语音合成小工具界面 ![语音合成小工具界面](https://newblogimg.oss-cn-beijing.aliyuncs.com/2021/20210120121356.png) 输入文字合成语音。输出文件在 `Output` 文件夹下的 `Vioce.mp3` 文件。 #### 设置界面 ![设置界面](https://newblogimg.oss-cn-beijing.aliyuncs.com/2021/20210120124826.png) 设置工作目录,为高效管理磁盘文件,建议将此应用安装在 `D:/` 盘,而存放风格文件和输出视频的工作目录设置在 `E:\` 盘,不建议路径中包含中文。 ## 开发日志 ### 2021年1月15日 - 设计主界面布局 - 实现小功能图片转视频 ### 2021年1月16日 - 设计图片转视频的ui文件 - `py` 文件动态加载 `ui` 文件成功 ### 2021年1月20日 - 设计软件总体界面架构 - 简要说明界面应有的功能 ### 2021年1月23日 - Debug打包exe出错的原因,json不能用相对路径,要在程序中转化为绝对路径,否则编译不出错,打包为exe无法执行 - 重新打包注意删除spec文件 - json读写的文件要写死为绝对路径 ### 2021年1月24日 - 多份网络教程均提到程序中访问json文件等静态文件**不可使用相对路径**,详见 [Pyinstaller 打包常见用法和问题](https://blog.csdn.net/wanzheng_96/article/details/108556950),[pyinstaller 打包exe有依赖文件 py文件、dll文件、外部参数txt、json文件](https://blog.csdn.net/iv_zzy/article/details/107462210) - moviepy的audio和video函数采用了动态导入,参考[moviepy用pyinstaller打包问题](https://blog.csdn.net/CaRrrCa/article/details/109269055)修改对应文件即可。 ### 2021年1月28日 - 添加 Style 水印部分代码 - 修复log目录生成错误,制定了工作目录下的绝对路径 - 测试程序,发现无法在Win10的2004以上的版本启动。提示为numpy库的原因,应参考[fmod(), after an update to windows 2004, is causing a strange interaction with other code](https://developercommunity.visualstudio.com/content/problem/1207405/fmod-after-an-update-to-windows-2004-is-causing-a.html) 和 [NumPy 1.19.3 Release Notes](https://github.com/numpy/numpy/releases/tag/v1.19.3) 将numpy升级为1.19.3。但文中也提示修复有限,而且不保证升级后在低版本win10和win7中运行正常。决定暂缓升级,留待后续测试。 TODO: 用升级 Numpy1.19.3 打包程序,测试在高版本(2004及以上)和低版本(2004以下及win7)的运行情况。