C# 回放/回顾服务思路

本文介绍了一个C#实现的回放服务设计,包括数据回放和视频、音频回放功能。主要功能包括回放、随意跳转回放节点及设置倍速回放。实现思路涉及初始化、时间计时器、数据筛选与整合,以及前后跳转和倍速播放的细节处理。
摘要由CSDN通过智能技术生成

前言:由于项目需要回放功能,所以整理一下回放功能的思路,注意,此回放服务是数据回放和视频、音频回放结合服务,主要以数据回放为主要功能。初步构思,如果有误或有更好的解决方案希望大家踊跃提出,一定会虚心接受,知错就改!好了,废话不多说,直接看思路

1.功能需求

1.1.回放功能

1.2.随意跳转回放节点

1.3.设置倍速回放

2.实现思路

1.1.回放功能:需要初始化函数,获取需要回放的总数据集合、需要筛选的数据集合、播放倍速时间设置等基础数据,开始回放后开始时间计时器按秒来取出所需数据可与缓存所需数据对比,如果存在更新就进行数据整合发送

1.1.1.音频、视频回放: 以前端为Web界面为例根据回放时间节点回传给Web界面当前需要回放的视频/音频和时间点,达到数据和音频、视频一起回放的效果

1.2.随意跳转回放节点:这里有两个点:用户控制是向前(退)/向后(进)进行控制播放

      向前/退

      需要以第一秒为当前播放节点和用户选中时间节点

// 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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值