The lightweight library for compress image, video, and audio with an awesome experience

Overview

Would you like to support me?


react-native-compressor

alt text

Compress videos, images and audio before upload

react-native-compressor package is a set of functions that allow you compress Image,Audio and Video

If you find this package useful hit the star 🌟

Table of Contents

Open Table of Contents

Installation

React Native

For React Native<0.65

yarn add react-native-compressor@rnlessthan65

For React Native 0.65 or greater

yarn add react-native-compressor

Managed Expo

expo install react-native-compressor

Add the Compressor plugin to your Expo config (app.json, app.config.json or app.config.js):

{
  "name": "my app",
  "plugins": ["react-native-compressor"]
}

Finally, compile the mods:

expo prebuild

To apply the changes, build a new binary with EAS:

eas build

Automatic linking (for React Native >= 0.60 only)

Automatic linking is supported for both Android and IOS

Linking (for React Native <= 0.59 only)

Note: If you are using react-native version 0.60 or higher you don't need to link this package.

react-native link react-native-compressor

Manual installation

iOS

  1. In XCode, in the project navigator, right click LibrariesAdd Files to [your project's name]
  2. Go to node_modulesreact-native-compressor and add Compressor.xcodeproj
  3. In XCode, in the project navigator, select your project. Add libCompressor.a to your project's Build PhasesLink Binary With Libraries
  4. Run your project (Cmd+R)<

Android

  1. Open up android/app/src/main/java/[...]/MainActivity.java
  • Add import com.reactnativecompressor.CompressorPackage; to the imports at the top of the file
  • Add new CompressorPackage() to the list returned by the getPackages() method
  1. Append the following lines to android/settings.gradle:
    include ':react-native-compressor'
    project(':react-native-compressor').projectDir = new File(rootProject.projectDir,'../node_modules/react-native-compressor/android')
    
  2. Insert the following lines inside the dependencies block in android/app/build.gradle:
      compile project(':react-native-compressor')
    

Usage

Image

Automatic Image Compression Like Whatsapp
import { Image } from 'react-native-compressor';

const result = await Image.compress('file://path_of_file/image.jpg', {
  compressionMethod: 'auto',
});

Here is this package comparison of images compression with WhatsApp

Manual Image Compression
import { Image } from 'react-native-compressor';

const result = await Image.compress('file://path_of_file/image.jpg', {
  maxWidth: 1000,
  quality: 0.8,
});

Video

Automatic Video Compression Like Whatsapp
import { Video } from 'react-native-compressor';

const result = await Video.compress(
  'file://path_of_file/BigBuckBunny.mp4',
  {
    compressionMethod: 'auto',
  },
  (progress) => {
    if (backgroundMode) {
      console.log('Compression Progress: ', progress);
    } else {
      setCompressingProgress(progress);
    }
  }
);

Here is this package comparison of video compression with WhatsApp

Manual Video Compression
import { Video } from 'react-native-compressor';

const result = await Video.compress(
  'file://path_of_file/BigBuckBunny.mp4',
  {},
  (progress) => {
    if (backgroundMode) {
      console.log('Compression Progress: ', progress);
    } else {
      setCompressingProgress(progress);
    }
  }
);
Cancel Video Compression
import { Video } from 'react-native-compressor';

let cancellationVideoId = '';

const result = await Video.compress(
  'file://path_of_file/BigBuckBunny.mp4',
  {
    compressionMethod: 'auto',
    // getCancellationId for get video id which we can use for cancel compression
    getCancellationId: (cancellationId) =>
      (cancellationVideoId = cancellationId),
  },
  (progress) => {
    if (backgroundMode) {
      console.log('Compression Progress: ', progress);
    } else {
      setCompressingProgress(progress);
    }
  }
);

// we can cancel video compression by calling cancelCompression with cancel video id which we can get from getCancellationId function while compression
Video.cancelCompression(cancellationVideoId);

Audio

import { Audio } from 'react-native-compressor';

const result = await Audio.compress(
  'file://path_of_file/file_example_MP3_2MG.mp3',
  { quality: 'medium' }
);

Background Upload

import { backgroundUpload } from 'react-native-compressor';

const headers = {};

const uploadResult = await backgroundUpload(
  url,
  fileUrl,
  { httpMethod: 'PUT', headers },
  (written, total) => {
    console.log(written, total);
  }
);

API

Image

ImageCompressor

  • compress(value: string, options?: CompressorOptions): Promise<string>

    Compresses the input file URI or base-64 string with the specified options. Promise returns a string after compression has completed. Resizing will always keep the original aspect ratio of the image, the maxWidth and maxHeight are used as a boundary.

CompressorOptions

  • compressionMethod: compressionMethod (default: "manual")

    if you want to compress images like whatsapp then make this prop auto. Can be either manual or auto, defines the Compression Method.

  • maxWidth: number (default: 1280)

    The maximum width boundary used as the main boundary in resizing a landscape image.

  • maxHeight: number (default: 1280)

    The maximum height boundary used as the main boundary in resizing a portrait image.

  • quality: number (default: 0.8)

    The quality modifier for the JPEG file format, can be specified when output is PNG but will be ignored.

  • input: InputType (default: uri)

    Can be either uri or base64, defines the contentents of the value parameter.

  • output: OutputType (default: jpg)

    Can be either jpg or png, defines the output image format.

  • returnableOutputType: ReturnableOutputType (default: uri)

    Can be either uri or base64, defines the Returnable output image format.

Video

  • compress(url: string, options?: videoCompresssionType , onProgress?: (progress: number)): Promise<string>
  • cancelCompression(cancellationId: string): void

    we can get cancellationId from getCancellationId which is the callback method of compress method options

videoCompresssionType

  • compressionMethod: compressionMethod (default: "manual")

    if you want to compress videos like whatsapp then make this prop auto. Can be either manual or auto, defines the Compression Method.

  • maxSize: number (default: 640)

    The maximum size can be height in case of portrait video or can be width in case of landscape video.

  • bitrate: string

    bitrate of video which reduce or increase video size. if compressionMethod will auto then this prop will not work

  • minimumFileSizeForCompress: number (default: 16)

    16 means 16mb. default our package do not compress under 16mb video file. minimumFileSizeForCompress will allow us to change this 16mb offset. fixed #26

  • getCancellationId: function

    getCancellationId is a callback function that gives us compress video id, which can be used in Video.cancelCompression method to cancel the compression

Audio

  • compress(url: string, options?: audioCompresssionType): Promise<string>

audioCompresssionType

  • quality: qualityType (default: medium)
    we can also control bitrate through quality. qualityType can be low | medium | high

Note: Audio compression will be add soon

Background Upload

  • `backgroundUpload: (url: string, fileUrl: string, options: FileSystemUploadOptions, onProgress?: ((writtem: number, total: number) => void) | undefined) => Promise
  • FileSystemUploadOptions
type FileSystemUploadOptions = (
  | {
      uploadType?: FileSystemUploadType.BINARY_CONTENT,
    }
  | {
      uploadType: FileSystemUploadType.MULTIPART,
      fieldName?: string,
      mimeType?: string,
      parameters?: Record<string, string>,
    }
) & {
  headers?: Record<string, string>,
  httpMethod?: FileSystemAcceptedUploadHttpMethod,
  sessionType?: FileSystemSessionType,
};

Get Metadata Of Video

if you want to get metadata of video than you can use this function

import { getVideoMetaData } from 'react-native-compressor';

const metaData = await getVideoMetaData(filePath);
{
	"duration": "6",
	"extension": "mp4",
	"height": "1080",
	"size": "16940.0",
	"width": "1920"
}
  • getVideoMetaData(path: string)

Get Real Path

if you want to convert

  • content:// to file:/// for android
  • ph:// to file:/// for IOS

the you can you getRealPath function like this

import { getRealPath } from 'react-native-compressor';

const realPath = await getRealPath(fileUri, 'video'); //   file://file_path.extension
  • getRealPath(path: string, type: string = 'video'|'image')

Get Temp file Path

if you wanna make random file path in cache folder then you can use this method like this

import { generateFilePath } from 'react-native-compressor';

const randomFilePathForSaveFile = await generateFilePath('mp4'); //   file://file_path.mp4
  • generateFilePath(fileextension: string)

Contributing

See the contributing guide to learn how to contribute to the repository and the development workflow.

License

MIT

Comments
  • error in compressing video in react native v0.65.1

    error in compressing video in react native v0.65.1

    1-earlier i was using react native 0.61.5 and used this library for video and image compression. it was working as expected. 2- I have upgraded react native version to 0.65.1 and now image compression is working as expected but in video compression i am having errors. 3- i am sharing the screenshot of my code and error kindly suggest some idea to resolve it. toshob3 toshob

    opened by rnqayush 28
  • Getting error while image compression.

    Getting error while image compression.

    Please check below attached screenshot for more details and also i added my code.

    Image.compress(path, { maxWidth:width, maxHeight:.height, input: 'uri', output: 'jpg', quality: 0.5, returnableOutputType: 'uri', }) .then(async (compressedFileUri) => { console.log('===========image compressed=============' + JSON.stringify(detail, null, 2))

            const detail = await getFileInfo(compressedFileUri);
          })
          .catch((e) => {
            console.log( '==============error in compression===================');
          });
    

    Simulator Screen Shot - iPhone 12 Pro Max - 2021-06-23 at 18 08 02

    opened by krupalikevadiya 23
  • iOS app crashes when trying to compress video from the Photos app

    iOS app crashes when trying to compress video from the Photos app

    Hello and thanks for publishing this library.

    react-native-compressor crashes my iOS app when attempting to compress a video which is loaded from the iOS Photos app. Video is shot using the phone's camera. If I first save the video from the Photos app to a local folder on the device (using "Save to Files" in Photos' share menu), then the compression on that saved file is successful and I get no crash.

    When debugging in xCode, the failure appears at line 295 in VideoCompressor.swift:

    height: Int(resultHeight), width: Int(resultWidth) -> Thread 23: Swift runtime failure: Float value cannot be converted to Int because the result would be less than Int.min

    It is as if the original videos from the Photos app were missing the height/width information. But note that the videos always play fine in my app's video player and the files always return the correct metadata (using getVideoMetaData), even the ones that crash the library.

    The code I use to call the library:

    const response = await Video.compress(
        file.uri,
        {
            compressionMethod: 'auto',
            maxSize: 1024,
            minimumFileSizeForCompress: 5,
        },
        progress => console.log(progress)
    )
        .catch(err => console.log(err));
    
    
    opened by alariej 22
  • Error after adding module and starting expo project

    Error after adding module and starting expo project

    Current behavior

    Invariant Violation: Native module cannot be null.
    at node_modules/react-native/Libraries/Core/ExceptionsManager.js:104:6 in reportException
    at node_modules/react-native/Libraries/Core/ExceptionsManager.js:172:19 in handleException
    at node_modules/react-native/Libraries/Core/setUpErrorHandling.js:24:6 in handleError
    at node_modules/@react-native/polyfills/error-guard.js:49:36 in ErrorUtils.reportFatalError
    at node_modules/metro-runtime/src/polyfills/require.js:204:6 in guardedLoadModule
    at http://192.168.31.95:19000/index.bundle?platform=ios&dev=true&hot=false&minify=false:264912:3 in global code
    

    Expected behavior

    App starts

    Platform

    • [X] iOS (Android not tested)

    React Native Version

    Expo 44 and RN 0.64.3

    React Native Compressor Version

    1.5.0

    Reproducible Steps And Demo

    Install via yarn add or expo cli Check that the app.json has been updated with the plugin property Restart via expo start

    Here is the full error message

    Invariant Violation: Native module cannot be null.
    at node_modules/react-native/Libraries/Core/ExceptionsManager.js:104:6 in reportException
    at node_modules/react-native/Libraries/Core/ExceptionsManager.js:172:19 in handleException
    at node_modules/react-native/Libraries/Core/setUpErrorHandling.js:24:6 in handleError
    at node_modules/@react-native/polyfills/error-guard.js:49:36 in ErrorUtils.reportFatalError
    at node_modules/metro-runtime/src/polyfills/require.js:204:6 in guardedLoadModule
    at http://192.168.31.95:19000/index.bundle?platform=ios&dev=true&hot=false&minify=false:264912:3 in global code
    
    Invariant Violation: "main" has not been registered. This can happen if:
    * Metro (the local dev server) is run from the wrong folder. Check if Metro is running, stop it and restart it in the current project.
    * A module failed to load due to an error and `AppRegistry.registerComponent` wasn't called.
    at node_modules/react-native/Libraries/Core/ExceptionsManager.js:104:6 in reportException
    at node_modules/react-native/Libraries/Core/ExceptionsManager.js:172:19 in handleException
    at node_modules/react-native/Libraries/Core/setUpErrorHandling.js:24:6 in handleError
    at node_modules/@react-native/polyfills/error-guard.js:49:36 in ErrorUtils.reportFatalError
    

    I don't import the library in any file If i remove the plugin property, app starts. As soon as i import the library in a component the error raises again

    opened by pihomeserver 19
  • Adjust 16mb minimum compression size for react-native-compressor@0.5.6

    Adjust 16mb minimum compression size for [email protected]

    Some developers start to use this package within the expo. Unfortunately, Expo still uses an old version of React Native up to React Native 0.64.3.

    Can you remove this condition https://github.com/Shobbak/react-native-compressor/blob/dd5c106522461005acd89d6f679c0ef2f96fdd74/ios/Video/VideoCompressor.swift#L205

    and old version users can benefit from that patch.

    opened by emmbyiringiro 15
  • Crash of video compression on Samsung J5

    Crash of video compression on Samsung J5

    We are currently facing an error with the compression on a Samsung J5 device. It runs into an IllegalStateException in the VideoSlimmer.convertVideo() call.

    We get the following stacktrace:

        android.media.MediaCodec.native_stop MediaCodec.java
        android.media.MediaCodec.stop MediaCodec.java:2251
        com.zolad.videoslimmer.VideoSlimEncoder.releaseCoder VideoSlimEncoder.java:613
        com.zolad.videoslimmer.VideoSlimEncoder.convertVideo VideoSlimEncoder.java:391
        com.zolad.videoslimmer.VideoSlimTask.doInBackground VideoSlimTask.java:30
        com.zolad.videoslimmer.VideoSlimTask.doInBackground VideoSlimTask.java:11
        android.os.AsyncTask$3.call AsyncTask.java:394
        java.util.concurrent.FutureTask.run FutureTask.java:266
        android.os.AsyncTask$SerialExecutor$1.run AsyncTask.java:305
        java.util.concurrent.ThreadPoolExecutor.runWorker ThreadPoolExecutor.java:1167
        java.util.concurrent.ThreadPoolExecutor$Worker.run ThreadPoolExecutor.java:641
        java.lang.Thread.run Thread.java:923
    

    We found out, that in the com.zolad.videoslimmer package the releaseCoder() method has no proper exception handling if an encoder is already released. This results in the exception bubbling up into the react-native-compressor package.

    Is there any chance that we can fix this in this library?

    opened by daschaa 14
  • Stretching resolution  for potrait video with ratio of 18:9

    Stretching resolution for potrait video with ratio of 18:9

    The latest android device camera has support for 18:9. when a device uses this aspect ratio the video is rendered in portrait mode which is better for video reels platforms like TikTok.

    When you need to compress down, on Android Video stretch and final resolution become landscape.

    I have done this test for final compression resolution

    https://github.com/Shobbak/react-native-compressor/blob/master/android/src/main/java/com/reactnativecompressor/Video/AutoVideoCompression/AutoVideoCompression.java#L39

    
       const actualWidth =1080
       const actualHeight = 1920
       const maxSize = 640
       
       
         const scale = actualWidth > actualHeight ? maxSize / actualWidth : maxSize / actualHeight;
    
    
         const resultWidth = Math.round(actualWidth * scale / 2) * 2;
    
    
         const resultHeight = Math.round(actualHeight * scale / 2) * 2;
    
    
         console.log({resultHeight,resultWidth}) // { resultHeight: 640, resultWidth: 360 }
         
        
    
    

    Resolution is scaled perfect but when you pass to VideoSlimer it swaps width to height.

    So final video become

     { resultHeight: 360, resultWidth: 640 }
    

    @nomi9995 Try to record video in portrait mode probably at 18:9. There's a possibility that this new aspect ratio is not supported by https://github.com/zolad/VideoSlimmer

    opened by emmbyiringiro 10
  • Video not compressing below 10 mb

    Video not compressing below 10 mb

    Hi, first of all I appreciate your effort for making this package. Gone through your excel for video compress, can you do the compression for video below 10 mb? or else can you refer some other package for the same?

    Feature 
    opened by aamez 9
  • While compressing the video file in Android returning Empty Value

    While compressing the video file in Android returning Empty Value

    While trying to compress the video file in the Android after updating to the new version 1.5.1 before that it is working but in IOS working Fine. Also Not show this Progress console :

    import { Image as ImageCompress, Video as VideoCompress, getRealPath, } from 'react-native-compressor';

    let uri = file:///storage/emulated/0/Download/zapya/video/VID-20201103-WA0022.mp4

    const videoResult = await VideoCompress.compress( uri, { compressionMethod: 'auto', }, progress => { console.log('Video Compression Progress: ', progress); }, );

    console.log( 'Video Compress : ', videoResult );

    output : Video Compress :

    opened by asadraza4522 8
  • App getting crashed, if we upload a video of more than 20 minutes.

    App getting crashed, if we upload a video of more than 20 minutes.

    If we upload a video of more than 20 minutes, app is getting crashed, we have tested the video of duration 30 sec, 01 minute, 05 minutes, 10 minutes and 15 minutes, it's compressing fine, the video more than of 20 minutes is not compressing and giving us this log (I'm attaching the log of the RN-Debugger that we get, if we try to compress the 20min video). Kindly have a look into this.

    -----------Debugger Logs--------------------------------- Failed to convert base64: Cannot Open VideoCompressionScreen.js:91 error TypeError: Cannot read property 'path' of undefined at _callee3$ (VideoCompressionScreen.js:80) at tryCatch (runtime.js:63) at Generator.invoke [as _invoke] (runtime.js:294) at Generator.next (runtime.js:119) at tryCatch (runtime.js:63) at invoke (runtime.js:155) at runtime.js:165 at tryCallOne (core.js:37) at core.js:123 at JSTimers.js:248

    opened by govind-v-natex 8
  • [Unhandled promise rejection: TypeError: null is not an object (evaluating 'NativeVideoCompressor.compress')]

    [Unhandled promise rejection: TypeError: null is not an object (evaluating 'NativeVideoCompressor.compress')]

    Hi, I thank you very much for this library, I tried to use it on an mp4 file after a cam record, but I got this message in the title: [Unhandled promise rejection: TypeError: null is not an object (evaluating 'NativeVideoCompressor.compress')]

    my function component const takeVideo = async () => {

    if(camera){
        const data = await camera.recordAsync({
            quality : Camera.Constants.VideoQuality['16:9'],
            videoBitrate : 2*1000*1000,
            maxDuration : 120,
            maxFileSize : 40*1000*1000,
            mute: false
    
        })
        setRecord(data.uri);
    
        console.log(data.uri);
      try{  
        const result = await Video.compress(
         data.uri,
          {
            compressionMethod: 'auto',
          },
          (progress) => {
            
            console.log('Compression Progress Front: ', progress);
            
          }
        );
    
      } catch (err) {
        console.log('Error:', err);
      }
    

    } }

    opened by elbouhalimohsin 8
  • On installation showing error Could not resolve io.github.lizhangqu:coreprogress:1.0.2.

    On installation showing error Could not resolve io.github.lizhangqu:coreprogress:1.0.2.

    My react-native - 0.70.6 and used react-native-compressor - 1.6.1 after installing using command npm i react-native-compressor when i run the project it will threw an error FAILURE: Build failed with an exception.

    • What went wrong: Could not determine the dependencies of task ':react-native-compressor:compileDebugAidl'.

    Could not resolve all task dependencies for configuration ':react-native-compressor:debugCompileClasspath'. Could not resolve io.github.lizhangqu:coreprogress:1.0.2. Required by: project :react-native-compressor > Skipped due to earlier error > Skipped due to earlier error Please help to fix the issue ...

    opened by iasreact1 3
  • Background compression not working in android

    Background compression not working in android

    Current behavior

    Background compression stops for videos larger than 35mb on slightly older devices such as a Galaxy s10. Works fine on newer higher end devices.

    Expected behavior

    Background compression should complete for videos larger than 35mb using a device like a Galaxy s10.

    Platform

    • [X] Android
    • [] iOS

    React Native Version

    0.70.5

    React Native Compressor Version

    1.5.2

    Reproducible Steps And Demo

    Supply a 50MB video to react native compressor using an older device and then immediately background the app. The compression stops after around 1-2 mins.

    opened by hkhan6916 1
  • [Android] Returned path should start with `file:///data...` instead of `file://...`

    [Android] Returned path should start with `file:///data...` instead of `file://...`

    Current behavior

    Returned path starts with file://data making the URI invalid

    Expected behavior

    Return path should start with file:///data....

    This fixes the issue:

    const uri = brokenURI.startsWith("file://") && !brokenURI.startsWith("file:///") ? brokenURI.replace("file://", "file:///") : brokenURI;
    

    or shorter

    const uri = brokenURI.replace(/^file:\/\/([^/])/, "file:///$1");
    

    Platform

    • [X] Android

    React Native Version

    0.70.6

    React Native Compressor Version

    1.6.1

    opened by hrastnik 2
  • destination path is error

    destination path is error

    Current behavior

    destinationPath is "file:/"+destinationPath,sometime android will cause "No such file or directory"

    eg:

    await fetch(destinationPath)
    

    will throw "TypeError: Network request failed"

    Expected behavior

    destinationPath is "file://"+destinationPath

    Platform

    • [X] Android
    • [ ] iOS

    React Native Version

    "react-native": "0.70.6"

    React Native Compressor Version

    "react-native-compressor": "1.6.1"

    opened by Milker90 1
  • RN 0.65.0 require some new listener methods on the Native Module when call the NativeEventEmitter. It shows the

    RN 0.65.0 require some new listener methods on the Native Module when call the NativeEventEmitter. It shows the "new NativeEventEmmiter()..." warning.

    Hi! 👋

    Firstly, thanks for your work on this project! 🙂

    Today I used patch-package to patch [email protected] for the project I'm working on.

    A lot of libraries, including this one is showing a warning with the message: "new NativeEventEmitter() was called with a non-null argument without the required addListener/removeListeners method." Like the image below: image

    This warning is shown because of the commit 114be1d, which checks if the Native Module has the methods: addListener and removeListeners. These checks are necessary because of this commit f5502fb, which tries to use the Native Module to notify subscriptions on Android. So I think this issue is only related to Android and the 0.65.0 release.

    Here is the diff that solved my problem:

    diff --git a/node_modules/react-native-compressor/android/src/main/java/com/reactnativecompressor/Video/VideoModule.java b/node_modules/react-native-compressor/android/src/main/java/com/reactnativecompressor/Video/VideoModule.java
    index be1ba60..4cb5d4c 100644
    --- a/node_modules/react-native-compressor/android/src/main/java/com/reactnativecompressor/Video/VideoModule.java
    +++ b/node_modules/react-native-compressor/android/src/main/java/com/reactnativecompressor/Video/VideoModule.java
    @@ -110,4 +110,14 @@ public class  VideoModule extends ReactContextBaseJavaModule {
           promise.reject(ex);
         }
       }
    +
    +  @ReactMethod
    +  public void addListener(String eventName) {
    +    // Keep: Required for RN built in Event Emitter Calls.
    +  }
    +
    +  @ReactMethod
    +  public void removeListeners(Integer count) {
    +    // Keep: Required for RN built in Event Emitter Calls.
    +  }
     }
    

    This issue body was partially generated by patch-package.

    opened by DarWiM 3
Releases(v1.6.1)
Owner
Shobbak
Shobbak
Presti 5 Nov 19, 2022
Modular Apache commons compress

Kala Compress This project is based on Apache Commons Compress. Kala Compress has made some improvements on its basis: Modularization (JPMS Support),

Glavo 6 Feb 22, 2022
PipelinR is a lightweight command processing pipeline ❍ ⇢ ❍ ⇢ ❍ for your Java awesome app.

PipelinR PipelinR is a lightweight command processing pipeline ❍ ⇢ ❍ ⇢ ❍ for your awesome Java app. PipelinR has been battle-proven on production, as

Eduards Sizovs 288 Jan 8, 2023
An awesome Spring Boot Starter!

spring-boot-tony-starter An awesome Spring Boot Starter! Explore the docs » View Demo · Report Bug · Request Feature Table of Contents About The Proje

徐植君 11 Sep 13, 2022
An awesome native wheel picker component for React Native.

⛏️ react-native-picky An awesome native wheel picker component for react-native. Features Supports multiple columns ✅ Supports looping ✅ Native Androi

null 28 Dec 4, 2022
A collection of client-side tweak kits to enhance your Minecraft game experience. Tweak Minecraft and beyond!

TweakerMore A collection of client-side tweak kits for enhance your Minecraft game experience Everything is disabled by default, so you don't need to

Fallen_Breath 105 Jan 3, 2023
My Knowledge & Experience

My Knowledge & Experience Hi! Welcome to mine My Knowledge & Experience! ✌️ Here you will find several of my learnings over the years and you will be

Keuvyn Teixeira de Jesus 1 Jan 20, 2022
A cross-platform Mod for the popular Minecraft project, where the border always has a radius equal to the player's current experience level.

Level = Border A cross-platform Mod for the popular Minecraft project, where the border always has a radius equal to the player's current experience l

Jakob K 14 Nov 22, 2022
This Web Application Allows A user to upload a two minutes Video. It uses Server Side Capabilities of Nodejs and Spring Boot .

VideoStreamingApplication Purpose Of This Application These days trend of short videos are on rise youtube recently realsed "Shorts" . So , taking ins

Prateek Kumar 57 Nov 13, 2022
The High-Performance Java Persistence book and video course code examples

High-Performance Java Persistence The High-Performance Java Persistence book and video course code examples. I wrote this article about this repositor

Vlad Mihalcea 1.1k Jan 9, 2023
Live video out from your DJI FPV Goggles via USB.

DigiView is an Android app that allows you to get a live preview from your DJI FPV Goggles (V1 & V2). Working with Android 7+ and devices supporting U

Fpv Out Club 235 Dec 19, 2022
bilibili B站 哔哩哔哩 acfun A站 樱花动漫 番剧下载器(Video Downloader):smiley:​ 仅供学习交流 求 star orz

AnimeDownloader 番剧下载器 ?? 使用教程 下载 B 站视频 支持的类型 普通视频(不支持互动类视频) 番剧(大会员视频需要先登录) 电影 纪录片 ... 下载 A 站视频 支持类型 普通视频 番剧(不支持付费视频) 下载樱花动漫视频 支持类型 部分支持(加密的 m3u8 类型视频不

lin 71 Dec 16, 2022
📺 Streaming OBS video/Mjpeg into maps on item frames at a high frame rate

MakiScreen Mjpeg ?? Streaming OBS video/Mjpeg into maps on item frames at a high frame rate images taken on TotalFreedom: play.totalfreedom.me How doe

null 4 Apr 8, 2022
Record 360 video with jMonkeyEngine3

jm3-360-video Record 360 video with jMonkeyEngine3 Check CustomVideoRecorderAppStateTest.java for usage. Example: https://youtu.be/TccLGPPZ3Iw This wi

Rickard Edén 3 Jan 24, 2022
100+ Spring Boot Articles, Tutorials, Video tutorials, Projects, Guides, Source code examples etc

YouTube Channel - Spring Boot Tutorial Subscribe for future video and updates Spring Boot Tutorial on YouTube Newly published spring boot tutorials (2

Ramesh Fadatare 1.2k Jan 2, 2023
Google's ML-Kit-Vision demo (android) for pre encoded video.

Android ML Kit Vision demo with Video Google's ML-Kit-Vision demo (android) for pre encoded video. Demos for camera preview and still image are also i

null 17 Dec 29, 2022
An image loading and caching library for Android focused on smooth scrolling

Glide | View Glide's documentation | 简体中文文档 | Report an issue with Glide Glide is a fast and efficient open source media management and image loading

Bump Technologies 33.2k Dec 31, 2022
A powerful image downloading and caching library for Android

Picasso A powerful image downloading and caching library for Android For more information please see the website Download Download the latest AAR from

Square 18.4k Dec 31, 2022
Image Cropping Library for Android

uCrop - Image Cropping Library for Android This project aims to provide an ultimate and flexible image cropping experience. Made in Yalantis How We Cr

Yalantis 11.4k Jan 2, 2023