好玩的调度技术-录制和回放

好玩的调度技术-录制和回放


前言

这个玩意早就想做了,一直没想明白怎么做,所以一直用浏览器自带的录屏插件,这样有个缺点就是无法知道当时车的一些状态信息,昨天用了一晚上时间做了这个功能,挺好玩的给大家看看

一、录制

录制功能真的很简单就是把当前的运行信息记录下来,然后加上视频的关键帧,然后就是压缩压缩在压缩,然后把他存储为一个本地文件,要回放那一时段的信息就调度那一时刻的文件释放出来,按照按照里面记录的关键帧播放一下就行了。
在这里插入图片描述

二、回放

agv调度录制和回放录像

回放就是根据记录的关键帧,依次加载关键帧里面的内容就行了,关键帧就是个时间戳,不懂时间戳的请自行百度。
然后就实现了回放,回放的过程中可以看到当时的所有信息,可以暂停查看每一个关键帧里面的内容,就是一比一还原了当时的场景,这样所有发生过的问题都可以溯源了。

总结

这个功能还是很有用的,建议大家在做调度的初期就实现,我实现的有点晚了。

好玩系列

好玩的调度技术
好玩的调度技术-录制和回放
好玩的调度技术-生成式三维技术
好玩的调度技术-场景编辑器
好玩的调度技术-缺失功能补充篇

// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY // KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR // PURPOSE. // // This material may not be duplicated in whole or in part, except for // personal use, without the express written consent of the author. // // Email: ianier@hotmail.com // // Copyright (C) 1999-2003 Ianier Munoz. All Rights Reserved. using System; using System.Threading; using System.Runtime.InteropServices; namespace WaveLib { internal class WaveOutHelper { public static void Try(int err) { if (err != WaveNative.MMSYSERR_NOERROR) throw new Exception(err.ToString()); } } public delegate void BufferFillEventHandler(IntPtr data, int size); internal class WaveOutBuffer : IDisposable { public WaveOutBuffer NextBuffer; private AutoResetEvent m_PlayEvent = new AutoResetEvent(false); private IntPtr m_WaveOut; private WaveNative.WaveHdr m_Header; private byte[] m_HeaderData; private GCHandle m_HeaderHandle; private GCHandle m_HeaderDataHandle; private bool m_Playing; internal static void WaveOutProc(IntPtr hdrvr, int uMsg, int dwUser, ref WaveNative.WaveHdr wavhdr, int dwParam2) { if (uMsg == WaveNative.MM_WOM_DONE) { try { GCHandle h = (GCHandle)wavhdr.dwUser; WaveOutBuffer buf = (WaveOutBuffer)h.Target; buf.OnCompleted(); } catch { } } } public WaveOutBuffer(IntPtr waveOutHandle, int size) { m_WaveOut = waveOutHandle; m_HeaderHandle = GCHandle.Alloc(m_Header, GCHandleType.Pinned); m_Header.dwUser = (IntPtr)GCHandle.Alloc(this);
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值