FME用于视频处理——这甚至是可能的吗?通过集成一些工具,我能够使用FME制作视频,并在web浏览器中显示它们。这个项目一开始是一个新的安全办公室的延时视频,后来演变成地理参考卫星电影,GPS跟踪与视频互动,等等。亚搏在线这是如何做到的。

一切是如何开始的

对我来说,它总是以乐趣开始,而不是工作。在一个美丽的冬日,“一般”频道的一条Slack信息给我带来了一个链接,指向建筑工地的摄像头,那里很快就亮了新的安全亚搏在线软件办公室将向所有安全人员敞开大门。亚搏在线

在对原始url (http://184.68.143.58:2424/view/viewer_index.shtml?id=17039),我发现了一个返回简单JPEG图像的地址。我们可以很容易地从网站检索图像与HTTPCallerImageFetcher.有四个变形金刚组成的工作空间,住在FME云每10分钟运行一次,我得到了一个收集相机数据的工具。

我用了很多年ImageMagick,我们可以用它来运行SystemCaller,用于制作动画。有了实时相机,我的图片收藏迅速增长到成千上万——使得GIF文件不再可行。

经过快速搜索,我发现FFmpeg,一个用于操作视频和音频数据的开源工具。它看起来与FME(数据操作程序)完美匹配。

简单的视频操作

从图像中组装视频

使用本文中解释的熟悉技术知识库文章之后,我迅速收集了一个简单的工地进度视频。Safe亚搏在线rs对这段视频的反应非常生动,特别是对积雪的累积和消退——我们去年经历了一个非常艰难的冬天。

使用FME,我们可以从矢量或栅格数据中获取一些附加信息来丰富原始照片。例如,我们可以给每一帧添加一个时间戳。两个变压器执行这样的覆盖VectorOnRasterOverlayerMapnikRasterizer.我个人的偏好当然是,Mapnik变压器它提供了几乎无限的可能性,使美丽的地图和图像。

一旦新的图像(或者更准确地说,视频帧)准备好了,我们就可以创建一个简单的命令AttributeCreator然后把它传递给SystemCaller,它会制作视频:

""ffmpeg.exe" - frameate 10 -i "C:LiveCamerasequenceimg_%5d.jpg"-i "C:LiveCamerasoundItalian_Morning.mp3" -y "C:LiveCameravideoNewOfficeConstruction.mp4""

注意,FME支持的其他操作系统的命令行语法略有不同。例如,基于unix的操作系统不需要在命令周围加上引号。我们在Linux的FME云环境中测试了FFmpeg。Mac OS仍在等待第一批测试者。

这就是实际执行的命令行,但是当然,在AttributeCreator中,我们可以使用属性和工作区参数来避免任何硬编码的路径或选项。

在上面的命令中,我们将帧率设置为10帧/秒,这对于带有动态场景的真实视频来说可能相当低,但在这种情况下工作得很好,指定输入(-i) -包含源视频帧和配乐的文件夹。“-y”告诉用相同的名称覆盖以前的任何输出。姓氏指定输出视频。

结果是一个视频文件,我们可以用任何视频播放器播放它:

下载模板

地理视频

下一件引起我注意并迫使我进入视频转换世界的事情,是新版本的发布传单,一个轻量级的Javascript库,用于制作交互式web地图。从1.1版开始,传单允许在地图上叠加视频。我的第一个也是最简单的想法是把建筑工地的视频放在地图上——在新办公室的位置上:

一个视频覆盖所需的Javascript代码量是惊人的小-我们指定视频的边界在纬度/长,并添加视频覆盖到之前声明的地图:

var bounds = L.latLngBounds([[37.72, -121.10], [37.76, -121.03]]);var videoOverlay = L.videoOverlay(“NewOffice.mp4”,bounds,{不透明度:1}).addTo(地图);

检查独立的HTML

当我们放大、缩小或平移时,视频叠加效果很好,视频继续播放。然而,当视频也是一幅地图时,视频在地图上的真正威力才真正显现出来!

对于地理空间视频来说,还有什么比频繁更新的卫星图像更好的呢?行星实验室公司。它拥有近200颗卫星,是一个极好的图像来源,重访率非常高,FME 2017提供了一个非常容易通过其行星阅读器访问这些数据。

使用FME制作视频的优点很明显——FME知道坐标系统,我们可以将不同投影中的多个数据源合并到一起,组合成单独的栅格帧,然后像上面解释的那样组合成视频。坐标系统的挑战有时是相当严重的。

例如,LeafletJS库需要在Latitude/Longitude中指定视频边界。传单(或谷歌地图和大多数其他网络地图系统)下面的网页瓷砖是在球形墨卡托。行星数据来自UTM。许多视频播放器只能播放标准大小的视频,如1920×1080或720×480。不仅因此,如果我们想把我们的视频地图,也与不同的视频播放器播放它,可能不是很灵活,我们必须考虑我们的消息来源的纬度框架和计算源图像的大小accordingly-narrower帧在赤道,更广泛的框架在极地地区。

检查独立的HTML

在视频图像之间的平滑过渡

FME的强大功能允许制作非常好的视觉效果,比如平滑过渡。比较以下两个视频,左边是早期的测试,右边是进一步的开发,其中我生成了下载图像之间的中间帧:

版本1 版本2

为了生成中间帧,我使用Alpha带,表示透明度的栅格带。在每一对连续的图像之间,我生成每个图像的n个副本,使用RasterExpressionEvaluator逐渐减少/增加它们的透明度,并使用RasterMosaicker使用“合成Alpha波段”模式拼接这些图像对。

透明度,%
第一帧 中间帧 第二帧
0 10 20. 30. 40 50 60 70 80 90 One hundred.
One hundred. 90 80 70 60 50 40 30. 20. 10 0

下载平滑过渡模板.使用“从图像组装视频”中的工作空间,从生成的帧制作视频。

将视频分解成图像

如果我们已经有了一个视频,想要对它做一些修改会怎样?例如,我们可能需要添加一个标志或地图覆盖,执行一些检测分析,或者,只是为了一个有趣的家庭项目,反向视频和学习如何飞行?


下面是一个从视频中提取单独帧的命令示例:

""ffmpeg.exe" -i "C:VideovideosDriveToWork.mp4" -vf fps=1/1 "C:Videoframesimg_%05d.png""

该命令告诉FFmpeg使用fps视频过滤器(-vf fps),其参数1/1命令每秒提取一张图像。img_%05d.png语法将强制输出文件的顺序编号添加前导零,使名称总是由5个数字组成,文件将有PNG扩展名:

我们可以把这些图像带回FMEFeatureReader在知道视频创建日期和时间后,计算每一帧的时间,并使用它来匹配GPS轨迹中的时间戳。

视频属性

许多视频场景,特别是那些我们将视频与GPS数据结合的场景,需要一些视频属性的知识,如视频创建时间、帧率和视频长度。其他有用的属性包括视频尺寸、地理位置(如果有的话)和比特率。

FFmpeg允许使用以下命令提取这些信息:

”“ffmpeg.exe”我“C: VideosHorseRiding.mp4”“

对于FME,我将其打包成一个定制的变压器VideoPropertyExtractor,它将几个表示视频属性的属性添加到经过它的特性中。

先进的视频操作

加上一些附加信息,如视频中的GPS跟踪,就可以创建非常有趣的场景。例如,我们可以创建一个网页,在那里视频与地图交互。我们可以从携带摄像机的无人机的GPS跟踪上截取视频片段。在讨论这些情况之前,让我们先讨论一下视频坐标系。

视频坐标系统

一个视频坐标系统类似于一个简单的二维基于像素的图像笛卡尔坐标系统。我们用它来改变视频帧——知道视频帧的尺寸后,我们可以在上面放置一个物体。如果我们从空间数据生成的图像中组装视频,我们也可以在保存帧和最终视频组装之前使用投影坐标系。

每个视频也有一个一维坐标系,它允许处理视频时间的不同部分。视频时间从0到它的完整长度,通常以小时、分钟和秒来显示(查看任何youtube视频),但在幕后以秒和几分之一秒来衡量。

这个坐标系可以与实时性相关。例如,当我们在晚上9:03开始播放一个15分钟长的视频时,我们知道它将在晚上9:18结束。对于我们的场景,一个更有趣的连接时间是视频创建的时间——当我们按下快门的时候。我们可以将创建时间戳与GPS跟踪点上的时间戳匹配。从这里,我们可以很容易地计算出视频的每一秒(或毫秒)是如何与GPS测量的时间轴相关的,也就是说,与真实世界的时间轴。

通过了解帧率,即以记录的速度每秒显示的视频帧数,我们可以计算出每帧的绝对时间。这开启了一些令人兴奋的可能性。

在地图上放置提取的视频帧

假设我们有一些路线上的录像。这是一个20分钟的车程,我们的相机以60帧/秒的速度拍摄的视频,可以拍摄72000张图片。我们不需要那么多——我们只需要看到沿途发生了什么,每1秒或每20秒一张图片就足够了,但我们想知道每个特定的视频帧是在哪里拍摄的。基于上述技术,我们可以计算每一帧的位置,并在地图上放置一个点或图像:

下载模板.视频由于其大小是单独存储的在这里(52 Mb)。

视频增加了额外的信息

一旦一个视频被分解成帧,我们可以将其作为普通的光栅处理,这意味着,我们可以重新采样它们,应用每个频带操作,覆盖矢量数据和马赛克与其他光栅文件。

使用FME的所有功能-处理GPS轨迹,集成在线服务如谷歌地图,应用MapnikRasterizer制作光栅,我们可以创建真正丰富的视频帧,并将它们合并回视频。

创建上述视频的工作空间使用了其他示例中展示的技术,但没有包含在本博客中。

视频和地图之间的互动

HTML 5标准支持所有现代浏览器,允许嵌入视频到网页。通过Javascript界面,我们可以获得以秒为单位的视频播放的当前时间,或者我们可以设置它,即跳转到视频中的某个位置(或时间)。

当我们将GPS跟踪时间和视频时间结合到同一时间轴上时,我们可以在地球上的坐标和视频时间之间来回切换。

在视频中跳到一个新的位置会立即导致标记在地图上的位置发生变化。点击轨道上的任何地方,视频回放将移动到相应的时间。

下载模板.视频由于其大小是单独存储的在这里(820 Mb)。

摆弄结果在这一页上(不需要下载任何东西)。

基于空间叠加的视频剪辑

想象一下,我们在GPS轨道上有一些很长的视频,但我们只对轨道上的某些区域感兴趣。

基于构成GPS轨迹的点上的时间戳,通过将视频时间轴与GPS时间轴进行匹配,我们可以计算出进入感兴趣区域和离开感兴趣区域时视频时间轴上的绝对时间和相对时间。知道这两个值,我们可以很容易地剪辑出所需的视频部分。

下载模板.视频由于其大小是单独存储的在这里(284 Mb)。

下一个是什么?

我们下一步要做什么——作为一个安全公司和整个公司?亚搏在线这就是我们想听到的!

我当然可以添加更多的视频自定义变形金刚,并做更多的视频演示。

以下是我在“应该做的事情”清单上列出的变压器想法。其中一些是作为工作空间实现的,你可以在这个页面上找到!

然而,主要的问题是,您需要在FME中进行视频处理吗?如果是,FME应该能够对视频做什么?我们当然不希望建立一个专业视频编辑器的替代品,我们更希望看到FME增加了集成的力量、空间感知的优势和自动化的灵活性。

您将在支持视频的FME中使用什么视频格式和转换?你的视频场景是什么?请让我们知道!

请注意。本博客中的所有工作空间都是实验性的。它们没有经过严格的测试过程,而这是我们在标准FME工具中使用的。如果您对它们有任何问题,请与我联系dmitri@亚搏在线safe.com或者自己找点乐子——制作自己的视频处理工具!

关于FME 运用

Dmitri花园

Dmitri是Safe Software的场景创建专家,这意味着他整天都在玩FME,亚搏在线测试它能做什么令人惊奇的事情。

评论

2对“用FME编辑空间视频”的响应

  1. 马库斯激战 说:

    这就跟你问声好!我刚开始用GoPro拍摄,它的优点是它有GPS和记录你拍摄的地方。但是他们的空间数据拼接软件很糟糕,所以如果FME能将视频文件和空间数据拼接在一起将会非常有趣!

  2. shane tinnock 说:

    你好,

    我在当地政府工作,我们刚刚开始使用无人机来检查道路和桥梁,以及委员会负责的其他主要资产,偶然发现了VideoPropertyExtractor,它看起来很适合提取无人机捕获的视频(mp4)中的元数据,目前寻找升级我们的版本的FME到当前版本,所以我可以使用这个转换器。这将有助于地图,整合,组织无人机视频到我们的地图系统,方便用户访问。

留下一个回复

您的电子邮件地址将不会被公布。必填字段被标记

相关的帖子