Invented the concept of hyper-meetings as time-shifted video conferences organized as video connected by hyperlinks. Created a web-based video conferencing app with server-based recording that can play previously recording meetings synchronized across the participants of the current meeting.
Technical challenges. Created a web-based video conferencing system using WebRTC and signalling with WebSocket. Implemented client-side video recording with upload to a web server. Implemented server-side recording with an open-source WebRTC media server to address performance issues with client-side recording. Implemented playback of previously recording videos, including the following of hyperlinks between meetings, with HTML video tags, JavaScript, and a timeline drawn in an HTML canvas. Synchronized video playback across meeting participants via a WebSocket protocal.
Technologies. WebRTC, WebRTC Media Server, WebSocket, Node.js, JavaScript, HTML Canvas, HTML Video, Amazon Mechanical Turk (for evaluation).
Developed an editor and video player for a form of hyper video where video providing additional detail is linked to a video segment. Users may choose to watch the linked video that is spliced into the main video being watched. Created a system for automatically generating video summaries in the form of multi-level hypervideo where each level provides additional detail.
Technical challenges. Created video player controls with link-following capabilities as Java applets that control either Windows Media Player or QuickTime plugins via JavaScript. Developed a hypervideo editor as 2D workspace in a Java applet. Devised an algorithm for automatically summarizing a video as a multi-level hypervideo.
Technologies. Java, Swing, JavaScript, Windows Media Player, QuickTime.
Designed and developed an easier way for video editing by dividing video into clips based on quality considerations such as camera motion. Created an editor implemented as a Java applet that supported the user in browsing through these clips, arranging some of them in a timeline, and adjusting clip durations by resizing the keyframe.
Technical challenges. Developed a C++ DirectShow app that retrieved video from a DV camcorder, analyzed it for motion and other features, and transcoded it into a video format suitable for playback. Designed and implemented a Java applet for displaying keyframes of video clips as image stacks sorted by different criteria and for arranging video clips along a timeline. Developed a C++ app that took the edit decision list together with an optional audio track to produce a new video file.
Technologies. Java, Swing, Windows Media Player, C++, DirectShow filter graph, DV video.