Skip to content

rodjjo/smart-vcutter

Repository files navigation

Smart-Vcutter

Build Status

A multiplatform tool to generate small, silent and short clips from videos.

Ubuntu screenshot

Attention: The sound support is not necessary to this project. The focus is to produce video animations instead of GIF images. I hope gif format get out of the internet some day.

It was a prototype (spike) and needs lots of code improvements, i'm opening the code to get some help with that.

Features

  • Extract a smaller area from video frame.
  • Rotation, Scale, Translation support.
  • Reverse video playback.
  • h-264, h-265, mjpeg, webm codecs support
  • First/Last frame comparation tool.
  • Interpolation support.
  • User friendly interface.
  • Multiplatform.

Example of a generated video clip:

example

Build

Install the building tools

sudo apt-get update
sudo apt-get install -y build-essential cmake

Install the dependencies:

sudo apt-get update -qq && sudo apt-get -y install \
    libboost-all-dev \
    libavcodec-dev \
    libavformat-dev \
    libavutil-dev \
    libavfilter-dev \
    libavdevice-dev \
    libswresample-dev \
    libswscale-dev \
    fluid \
    libfltk1.3-dev \
    libgl-dev \
    libjsoncpp-dev \
    libopencv-dev \
    lcov \
    libssl-dev \
    python3-pip
sudo pip3 install setuptools pre-commit

Generate and build the project

cmake .
cmake --build .
the test will run after the command above

Generate and build clearing first

cmake .
cmake --build . --clean-first
# the test will run after the command above

Install

cmake .
cmake --build .
sudo make install

Run the tests

make test
# or
make CTEST_OUTPUT_ON_FAILURE=1 test

Coverage

cmake -DCMAKE_BUILD_TYPE=Debug .
make coverage
# you can replace firefox browser if you want to
firefox coverage/index.html

Windows building

# It's necessary mingw
# The project was successfully compiled with: gcc.exe (i686-posix-dwarf-rev2, Built by MinGW-W64 project) 6.3.0
cmake -G "MinGW Makefiles" .
mingw32-make

You can download ffmpeg libraries from https://ffmpeg.zeranoe.com/builds/

Help scripts

# install dependencies
python3 misc/deps.py
# generate debian package (exec after compilated the project)
python3 misc/debdist.py

If you are a developer and want to colaborate

  • Turn the functions smaller.
  • Remove repeated code.
  • Refactory complex code.
  • Rename functions and variables to make the project easy to understand.
  • Create documentations.
  • Add tests when it's possible.