SlideXtract - A tool to help extract slides from a video file.

SlideXtract

A tool to help extract slides from a video file.

Slides are output in the out folder.

Features

I didn't find any other piece of code that did all the stuff I wanted, so I'll talk about some of the unique things about my code:

  • Customizable interval between frames, so you don't end up extracting every single frame in the video.
  • Customizable threshold distance to help differentiate between slides. Can be adjusted to fit your video better.
  • Parallel processing while extracting frames from video
  • Batch processing

Requirements

  • ffmpeg and ffprobe on PATH.

Usage

Usage: slidextract --path PATH [--interval INTERVAL] [--threshold THRESHOLD] [--workers WORKERS] [--format FORMAT] [--batch BATCH]

Options:
  --path PATH, -i PATH   Path to video.
  --interval INTERVAL, -t INTERVAL
                         Time between frames. [default: 0.5s]
  --threshold THRESHOLD, -d THRESHOLD
                         Threshold distance to recognize as different frame. [default: 10000]
  --workers WORKERS, -w WORKERS
                         Number of processes to run parallelly. [default: 8]
  --format FORMAT, -f FORMAT
                         File format of output slides. Allowed values are: bmp (fastest), png (slowest) and jpg/jpeg. [default: bmp]
  --batch BATCH, -b BATCH
                         Describes if Path is a path to a folder of videos. [default: 0]

For some reason the bmp format is fastest, and the png format is slowest. This probably has something to do with codecs, and how ffmpeg handles stuff. This has been tested on a real lecture (about an hour long) with a 5 second interval between frames.

Slides are output in the out folder.

Why?

Every single day I lose another bit of my sanity. I am on the brink of losing it.

Turns out, some professors will use a presentation in class, but will refuse. I REPEAT, REFUSE TO GIVE YOU THE SLIDES. THEY'LL UPLOAD A RECORDING OF THE LECTURE BUT WILL REFUUUUUUUSE TO UPLOAD THE SLIDES.

So, I made this. Have fun :)

Unis will do anything in their power to cause you maximum pain. I hope this relieved some of it.

Contribution

So far, some things we can improve on:

  • Speeding up frame extraction if possible
  • Speeding up the algorithm by which we find distance between frames
  • Alternate image distance algorithms
  • Hardware acceleration support for ffmpeg

If you have more ideas, feel free to open a PR/Issue!

Owner
Soumitra Shewale
Self taught backend, wannabe full stack dev. Google Code-in 2018 Finalist for @Catrobat | Google Code-in 2019 Runner up for @JuliaLang
Soumitra Shewale
Similar Resources

Stream video from ffmpeg to webrtc

ffmpeg-to-webrtc demonstrates how to send video from ffmpeg to your browser using pion.

Dec 28, 2022

Project to get Youtube video descriptions and search those videos as required

FamPayProject Project to get Youtube video descriptions and search those videos as required Prerequisities Postgres DB for persisting data Youtube Dat

Nov 5, 2021

Synthetic media is a realistic transformation of audio and video using artificial intelligence.

Synthetic media is a realistic transformation of audio and video using artificial intelligence.

Nov 20, 2021

Video converter with golang

Requirements Debian-like system (ubuntu, mint, etc...) with apt package manager Golang 1.15 Command tool make (use sudo apt install make -y to instal

Sep 10, 2022

ffcommander - An easy frontend to FFmpeg and Imagemagick to automatically process video and manipulate subtitles.

% FFCOMMANDER(1) ffcommander 2.39 % Mikael Hartzell (C) 2018 % 2021 Name ffcommander - An easy frontend to FFmpeg and Imagemagick to automatically pro

May 9, 2022

A go program that relies on back-end ffmpeg to process video-related content

Video Compress A go program that relies on back-end ffmpeg to process video-related content Installation v-go You can download the corresponding v-go

Dec 22, 2021

👾 Annie is a fast, simple and clean video downloader built with Go.

 👾 Annie is a fast, simple and clean video downloader built with Go.

👾 Annie is a fast, simple and clean video downloader built with Go. Installation Prerequisites Install via go install Homebrew (macOS only) Arch Linu

Jun 1, 2022

📽 MovieGo - Video Editing in Golang

📽 MovieGo - Video Editing in Golang MovieGo is a Golang library for video editing. The library is designed for fast processing of routine tasks relat

Dec 26, 2022

golang library for mux and demux file containers such as mpeg-ts,mpeg-ps,flv

gomedia mpeg-ts,mpeg-ps,flv muxer/demuxer mpeg-ts muxer mpeg-ts demuxer mpeg-ps muxer mpeg-ps demuxer flv muxer flv demuxer mpeg-ps will be done in th

Jan 4, 2023
Related tags
Go-video-preview-ffmpeg-wrapper - A simple helper wrapper to generate small webm video previews using ffmpeg, useful for web previews.

Go-video-preview-ffmpeg-wrapper A simple helper wrapper to generate small webm video previews using ffmpeg, useful for web previews. Getting Started u

Jan 5, 2022
golang function that download a video from youtube, and convert it to a mp3 file using ffmpeg

echedwnmp3 echedwnmp3 is a function that download a video from youtube, and convert it to a mp3 file using ffmpeg example package main import(echedwn

Dec 7, 2021
lmmp3 is a little golang library that download a video from youtube, and convert it to a mp3 file using ffmpeg

lmmp3 lmmp3 is a function that download a video from youtube, and convert it to a mp3 file using ffmpeg You need to have installed ffmpeg in your syst

Aug 12, 2022
Quik.do is a video conferencing tool.
Quik.do is a video conferencing tool.

Quik.do is a video conferencing tool.

Jan 3, 2023
Personal video streaming server.

tube This is a Golang project to build a self hosted "tube"-style video player for watching your own video collection over HTTP or hosting your own ch

Jan 5, 2023
Short video direct link acquisition 短视频直连获取工具
Short video direct link acquisition 短视频直连获取工具

Glink 短视频去水印一键解析应用 Short video direct link acquisition 短视频直连获取工具 Glink是一款基于go语言开发的短视频解析应用,前端使用vue+argon主题,后端使用go-fiber框架,支持web在线模式、客户端模式。

Dec 7, 2022
Take control over your live stream video by running it yourself. Streaming + chat out of the box.
Take control over your live stream video by running it yourself.  Streaming + chat out of the box.

Take control over your content and stream it yourself. Explore the docs » View Demo · Use Our Server for Testing · FAQ · Report Bug Table of Contents

Jan 1, 2023
live video streaming server in golang
live video streaming server in golang

中文 Simple and efficient live broadcast server: Very simple to install and use; Pure Golang, high performance, and cross-platform; Supports commonly us

Jan 4, 2023
LiveKit - Open source, distributed video/audio rooms over WebRTC

LiveKit is an open source project that provides scalable, multi-user conferencing over WebRTC. It's designed to give you everything you need to build real time video/audio capabilities in your applications.

Jan 9, 2023
Go4vl is Go library for working with the Video for Linux API (V4L2) natively, without any C bindings.

go4vl A Go library for working with the Video for Linux user API (V4L2). Gov4l hides all the complexities of working with V4L2 and exposes idiomatic G

Dec 23, 2022