All Projects → zakgof → velvet-video

zakgof / velvet-video

Licence: other
Java library for encoding / decoding / muxing / demuxing video and audio in various formats

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to velvet-video

vorbis aotuv
"aoTuV" is library for encoding and decoding of OggVorbis
Stars: ✭ 35 (+9.38%)
Mutual labels:  encoding, decoding, ogg-vorbis
staxrip
StaxRip is a video encoding app for Windows with a unrivaled feature set and usability.
Stars: ✭ 132 (+312.5%)
Mutual labels:  encoding, x264, x265
video-quality-metrics
Test specified presets/CRF values for the x264 or x265 encoder. Compares VMAF/SSIM/PSNR numerically & via graphs.
Stars: ✭ 87 (+171.88%)
Mutual labels:  x264, x265, av1
morton-nd
A header-only compile-time Morton encoding / decoding library for N dimensions.
Stars: ✭ 78 (+143.75%)
Mutual labels:  encoding, decoding
h264-roi
H.264 video Region of Interest encoding tool, using x264
Stars: ✭ 44 (+37.5%)
Mutual labels:  encoding, x264
multibase
multi base encoding/decoding utility
Stars: ✭ 15 (-53.12%)
Mutual labels:  encoding, decoding
BeFoR64
BeFoR64, Base64 encoding/decoding library for FoRtran poor men
Stars: ✭ 17 (-46.87%)
Mutual labels:  encoding, decoding
ExpertVideoToolbox
A lightweight, versatile GUI of x264, x265. Nearly full input formats support, .mkv and .mp4 output support. Avs support will be added soon. Language: Chinese
Stars: ✭ 12 (-62.5%)
Mutual labels:  x264, x265
go-webp
Simple and fast webp library for golang
Stars: ✭ 91 (+184.38%)
Mutual labels:  encoding, decoding
universal-base64
Small universal base64 functions for node.js and browsers
Stars: ✭ 25 (-21.87%)
Mutual labels:  encoding, decoding
DjvuNet
DjvuNet is a cross platform fully managed .NET library for working with Djvu documents which can run on Linux, macOS and Windows. Library has been written in C# and targets .NET Core v3.0 and .NET Standard v2.1 or later. We intend to provide DjVu document processing capabilities on par with DjVuLibre reference library (or even better).
Stars: ✭ 54 (+68.75%)
Mutual labels:  encoding, decoding
avro ex
An Avro Library that emphasizes testability and ease of use.
Stars: ✭ 47 (+46.88%)
Mutual labels:  encoding, decoding
js-multibase
JavaScript implementation of the multibase specification
Stars: ✭ 22 (-31.25%)
Mutual labels:  encoding, decoding
sms
A Go library for encoding and decoding SMSs
Stars: ✭ 37 (+15.63%)
Mutual labels:  encoding, decoding
ciphr
CLI crypto swiss-army knife for performing and composing encoding, decoding, encryption, decryption, hashing, and other various cryptographic operations on streams of data from the command line; mostly intended for ad hoc, infosec-related uses.
Stars: ✭ 100 (+212.5%)
Mutual labels:  encoding, decoding
Stego
🦕 stego is a steganographic swiss army knife.
Stars: ✭ 220 (+587.5%)
Mutual labels:  encoding, decoding
go-fixedwidth
Encoding and decoding for fixed-width formatted data
Stars: ✭ 64 (+100%)
Mutual labels:  encoding, decoding
Jsonlab
JSONLab: a native JSON/UBJSON/MassagePack encoder/decoder for MATLAB/Octave
Stars: ✭ 202 (+531.25%)
Mutual labels:  encoding, decoding
Elixir Json
Native JSON library for Elixir
Stars: ✭ 216 (+575%)
Mutual labels:  encoding, decoding
d3coder
Chrome extension for encoding/decoding and hashing text on websites
Stars: ✭ 26 (-18.75%)
Mutual labels:  encoding, decoding

velvet-video

Java library for encoding/decoding/muxing/demuxing video and audio. The API is high level, so the library users do not need to dive deep into details of video/audio encoding technology.

In particular, with velvet-video it's easy to:

  • create video from still images
  • extract frames from a video
  • extract audio tracks from video files
  • remux video or audio from one container format to another (like mp4 to mkv)
  • transcode (recompress) videos/audios using another codec (like x264 to vp9 or wav to mp3)
  • change video timing (slo-mo, timelapse etc)
  • merge videos or split them to segments
  • apply filters of transformations (before encoding or after decoding)

velvet-video supports dozens of container formats (including mp4, avi, webm, matroska) and codecs (including x264, hevc, vp9, av1).

Travis CI velvet-video on bintray

velvet-video embeds FFmpeg libraries under the hood, so it works at native speed and uses all FFmpeg's hardware optimization. Extracting and loading native libs is fully covered by velvet-video.

Supported platforms:

  • Windows 64 bit
  • Linux 64 bit

Please contact me if you need support for a platform not listed here.

Setup

To use velvet-video add the core dependency plus an appropriate native FFmpeg components package. velvet-video is available on Maven Central

The choice for native package is:

  • velvet-video-natives:free

    • only royalty-free components are included
    • encoders/decoders: Google VP8 and VP9, AOM av1
    • muxers/demuxers: webm, mkv, ogg
  • velvet-video-natives:full

    • maximum FFmpeg functionality included
    • the included components use patented technologies and may require royalty fees for commercial usage

gradle

dependencies {
    compile 'com.github.zakgof:velvet-video:0.5.2'
    compile 'com.github.zakgof:velvet-video-natives:0.2.8.full'
}

maven

<dependency>
  <groupId>com.github.zakgof</groupId>
  <artifactId>velvet-video</artifactId>
  <version>0.5.2</version>
  <type>pom</type>
</dependency>
<dependency>
  <groupId>com.github.zakgof</groupId>
  <artifactId>velvet-video-natives</artifactId>
  <version>0.2.8.full</version>
  <type>pom</type>
</dependency>

Quick start

Encode images into a video:

    IVelvetVideoLib lib = VelvetVideoLib().getInstance();
    try (IMuxer muxer = lib.muxer("matroska")
        .video(lib.videoEncoder("libaom-av1").bitrate(800000))
        .build(new File("/some/path/output.mkv"))) {
             IEncoderVideoStream videoStream = muxer.videoStream(0);	        
             videoStream.encode(image1);
             videoStream.encode(image2);
             videoStream.encode(image3);
    }      

Obtain images from a video:

	IVelvetVideoLib lib = VelvetVideoLib().getInstance();
	try (IDemuxer demuxer = lib.demuxer(new File("/some/path/example.mp4"))) {
	    IDecoderVideoStream videoStream = demuxer.videoStream(0);
	    IFrame videoFrame;
	    while ((videoFrame = videoStream.nextFrame()) != null) {
	   	    BufferedImage image = videoFrame.image();
	   	    // Use image as needed...
	    }
	}      

More examples

https://github.com/zakgof/velvet-video/tree/master/src/example/java/com/zakgof/velvetvideo/example

Example Description
ImagesToVideoAndBack Extract frame images from a video + compose a video from images
TranscodeVideoWithTimingEffects Transcode a video using another codec and applying slomo
RemuxVideo Repackage a video into another container format without transcoding
ScreenCaptureToVideo Capture the whole desktop to video
AudioPlayback Play a compressed audio file
ExtractAndTranscodeAudio Fetch audio tracks from a video file and save them as mp3 files

Advanced example: video player

See https://github.com/zakgof/velvet-video-player

License

velvet-video-core is dual-licensed under Apache 2.0 and GPL 3.0 (or any later version).

To comply with the FFMpeg components license present bundles into velvet-video-natives, choose Apache-2.0 when using with velvet-video-natives:free or GPL-3.0-or-later when using with velvet-video-natives:full

SPDX-License-Identifier: Apache-2.0 OR GPL-3.0-or-later

velvet-video-natives binaries on jcenter are licensed:

  • velvet-video-natives:free - under LGPL 3.0 or later
  • velvet-video-natives:full - under GPL 3.0 or later

velvet-video-natives build scripts are licensed under Apache 2.0

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].