### Query Supported Formats and Codecs with JAVE2 Source: https://context7.com/a-schild/jave2/llms.txt Retrieve lists of supported encoding and decoding formats, as well as available audio and video encoders/decoders from the FFmpeg executable bundled with JAVE2. This helps in understanding the capabilities of the underlying FFmpeg installation. ```java import ws.schild.jave.Encoder; public class QuerySupportedFormats { public static void main(String[] args) { Encoder encoder = new Encoder(); try { // Get supported encoding formats System.out.println("=== Supported Encoding Formats ==="); String[] encodingFormats = encoder.getSupportedEncodingFormats(); for (String format : encodingFormats) { System.out.println(" " + format); } // Get supported decoding formats System.out.println("\n=== Supported Decoding Formats ==="); String[] decodingFormats = encoder.getSupportedDecodingFormats(); for (String format : decodingFormats) { System.out.println(" " + format); } // Get audio encoders System.out.println("\n=== Audio Encoders ==="); String[] audioEncoders = encoder.getAudioEncoders(); for (String enc : audioEncoders) { System.out.println(" " + enc); } // Get video encoders System.out.println("\n=== Video Encoders ==="); String[] videoEncoders = encoder.getVideoEncoders(); for (String enc : videoEncoders) { System.out.println(" " + enc); } // Get audio decoders System.out.println("\n=== Audio Decoders ==="); String[] audioDecoders = encoder.getAudioDecoders(); for (String dec : audioDecoders) { System.out.println(" " + dec); } // Get video decoders System.out.println("\n=== Video Decoders ==="); String[] videoDecoders = encoder.getVideoDecoders(); for (String dec : videoDecoders) { System.out.println(" " + dec); } } catch (Exception e) { e.printStackTrace(); } } } ``` -------------------------------- ### Get Multimedia File Information Source: https://github.com/a-schild/jave2/wiki/Usage Retrieve information about a multimedia file's streams and container before transcoding using the `getInfo()` method. ```java MultimediaObject mmObject= new MultimediaObject(myFile); MultimediaInfo infos= mmObject.getInfo(); ``` ```java MultimediaObject mmObject= new MultimediaObject(myURL); MultimediaInfo infos= mmObject.getInfo(); ``` -------------------------------- ### Process Remote Multimedia from URL in Java Source: https://context7.com/a-schild/jave2/llms.txt Initializes a MultimediaObject from a URL to retrieve metadata or perform transcoding on remote media. ```java import ws.schild.jave.MultimediaObject; import ws.schild.jave.Encoder; import ws.schild.jave.encode.AudioAttributes; import ws.schild.jave.encode.EncodingAttributes; import ws.schild.jave.info.MultimediaInfo; import java.io.File; import java.net.URL; public class ProcessUrlMedia { public static void main(String[] args) { try { URL mediaUrl = new URL("https://example.com/video.mp4"); // readURLOnce=true disables progress reporting but is more efficient MultimediaObject mmObject = new MultimediaObject(mediaUrl, false); // Get info from URL source MultimediaInfo info = mmObject.getInfo(); System.out.println("Duration: " + info.getDuration() + " ms"); // Convert URL source to local file File target = new File("/path/to/output.mp3"); AudioAttributes audio = new AudioAttributes(); audio.setCodec("libmp3lame"); audio.setBitRate(128000); EncodingAttributes attrs = new EncodingAttributes(); attrs.setOutputFormat("mp3"); attrs.setAudioAttributes(audio); Encoder encoder = new Encoder(); encoder.encode(mmObject, target, attrs); System.out.println("URL media converted successfully!"); } catch (Exception e) { e.printStackTrace(); } } } ``` -------------------------------- ### Encode Video to WEBM Source: https://github.com/a-schild/jave2/wiki/Usage Demonstrates the basic workflow for encoding a video file using the Encoder class with specified audio and video attributes. ```JAVA System.out.println("encode WEBM"); File source = new File("test/videos/l4.mov"); File target = new File("test/out/l4.faststart.webm"); AudioAttributes audio = new AudioAttributes(); VideoAttributes video = new VideoAttributes(); EncodingAttributes attrs = new EncodingAttributes(); attrs.setAudioAttributes(audio); attrs.setVideoAttributes(video); audio.setCodec("libvorbis"); audio.setBitRate(new Integer(64000)); audio.setSamplingRate(new Integer(44100)); audio.setChannels(new Integer(2)); audio.setBitRate(new Integer(192000)); video.setCodec("libvpx"); video.setBitRate(new Integer(250000)); video.setFrameRate(new Integer(25)); attrs.setFormat("webm"); Encoder instance = new Encoder(); instance.encode(new MultimediaObject(source), target, attrs, null); ``` -------------------------------- ### Copy Video Stream and Re-encode Audio in Java Source: https://context7.com/a-schild/jave2/llms.txt Uses DIRECT_STREAM_COPY to preserve video quality while transcoding the audio track to MP3. ```java import ws.schild.jave.Encoder; import ws.schild.jave.MultimediaObject; import ws.schild.jave.encode.AudioAttributes; import ws.schild.jave.encode.VideoAttributes; import ws.schild.jave.encode.EncodingAttributes; import java.io.File; public class CopyVideoReencodeAudio { public static void main(String[] args) { File source = new File("/path/to/source.avi"); File target = new File("/path/to/target.avi"); // Re-encode audio to low quality MP3 AudioAttributes audio = new AudioAttributes(); audio.setCodec("libmp3lame"); audio.setBitRate(56000); audio.setChannels(1); audio.setSamplingRate(22050); // Direct stream copy for video (no re-encoding) VideoAttributes video = new VideoAttributes(); video.setCodec(VideoAttributes.DIRECT_STREAM_COPY); EncodingAttributes attrs = new EncodingAttributes(); attrs.setOutputFormat("avi"); attrs.setAudioAttributes(audio); attrs.setVideoAttributes(video); Encoder encoder = new Encoder(); try { encoder.encode(new MultimediaObject(source), target, attrs); System.out.println("Encoding completed!"); } catch (Exception e) { e.printStackTrace(); } } } ``` -------------------------------- ### Initialize JAVE2 Encoder Source: https://github.com/a-schild/jave2/wiki/Usage Create an instance of the Encoder class to begin multimedia transcoding operations. ```java Encoder encoder = new Encoder(); ``` -------------------------------- ### Convert Audio to MP3 using Jave2 Source: https://github.com/a-schild/jave2/blob/master/README.md This Java code snippet demonstrates how to convert an audio file to MP3 format using Jave2. Ensure the source and target file paths are correctly set. ```JAVA boolean succeeded; try { File source = new File("file path"); File target = new File("file path"); //Audio Attributes AudioAttributes audio = new AudioAttributes(); audio.setCodec("libmp3lame"); audio.setBitRate(128000); audio.setChannels(2); audio.setSamplingRate(44100); //Encoding attributes EncodingAttributes attrs = new EncodingAttributes(); attrs.setFormat("mp3"); attrs.setAudioAttributes(audio); //Encode Encoder encoder = new Encoder(); encoder.encode(new MultimediaObject(source), target, attrs); } catch (Exception ex) { ex.printStackTrace(); succeeded = false; } ``` -------------------------------- ### Convert Audio to MP3 with Progress Listener in Java Source: https://github.com/a-schild/jave2/blob/master/Examples.md Use this code to convert audio files to MP3 format. Implement `ConvertProgressListener` to receive updates on the conversion progress. Ensure necessary libraries for audio encoding are included. ```java ConvertProgressListener listener = new ConvertProgressListener(); try { File source = new File("file path"); File target = new File("file path"); //Audio Attributes AudioAttributes audio = new AudioAttributes(); audio.setCodec("libmp3lame"); audio.setBitRate(128000); audio.setChannels(2); audio.setSamplingRate(44100); //Encoding attributes EncodingAttributes attrs = new EncodingAttributes(); attrs.setFormat("mp3"); attrs.setAudioAttributes(audio); //Encode Encoder encoder = new Encoder(); encoder.encode(new MultimediaObject(source), target, attrs,listener); } catch (Exception ex) { ex.printStackTrace(); succeeded = false; } ``` ```java public class ConvertProgressListener implements EncoderProgressListener { public ConvertProgressListener() { //code } public void message(String m) { //code } public void progress(int p) { //Find %100 progress double progress = p / 1000.00; System.out.println(progress); } public void sourceInfo(MultimediaInfo m) { //code } } ``` -------------------------------- ### Configure Maven Dependencies Source: https://github.com/a-schild/jave2/wiki/Usage Include these dependencies in your pom.xml to add JAVE2 to your project. Use jave-all-deps for cross-platform support or jave-core with a specific native library for smaller footprints. ```XML ws.schild jave-all-deps 2.4.2 ``` ```XML ws.schild jave-core 2.4.2 ws.schild jave-native-linux64 2.4.2 ``` -------------------------------- ### Maven Dependency - Core Only with Platform Binary Source: https://context7.com/a-schild/jave2/llms.txt Use this configuration for Maven projects requiring only the core JAVE2 library and a specific platform's FFmpeg binary. ```xml ws.schild jave-core 3.5.0 ws.schild jave-nativebin-linux64 3.5.0 ``` -------------------------------- ### Multimedia Transcoding with Encoder Source: https://github.com/a-schild/jave2/wiki/Usage This section details how to use the `Encoder` class to transcode multimedia files. It covers the `encode` method and the necessary parameters. ```APIDOC ## POST /api/encode ### Description Initiates a multimedia transcoding operation. ### Method POST ### Endpoint / ### Parameters #### Request Body - **source** (ws.schild.MultimediaObject) - Required - The source multimedia file. - **target** (java.io.File) - Required - The target file path for the encoded output. - **attributes** (ws.schild.jave.EncodingAttributes) - Required - Configuration for the encoding process. ### Request Example ```json { "source": "path/to/source.mp4", "target": "path/to/target.avi", "attributes": { "format": "avi", "audioAttributes": { "codec": "libmp3lame", "bitRate": 128000, "sampleRate": 44100, "channels": 2 }, "videoAttributes": { "codec": "mpeg4", "bitRate": 1600000, "frameRate": 25, "size": { "width": 640, "height": 480 } }, "offset": 0.0, "duration": 30.0 } } ``` ### Response #### Success Response (200) Indicates that the transcoding operation has been initiated successfully. The actual completion is asynchronous. #### Response Example ```json { "message": "Transcoding initiated successfully." } ``` ``` -------------------------------- ### Encoding Attributes Configuration Source: https://github.com/a-schild/jave2/wiki/Usage Details on how to configure the `EncodingAttributes` for transcoding, including audio, video, format, offset, and duration. ```APIDOC ## EncodingAttributes ### Description Configuration object for multimedia transcoding settings. ### Fields #### `setAudioAttributes` - **audioAttributes** (ws.schild.jave.AudioAttributes) - Optional - Sets the audio encoding attributes. If null, no audio stream is included. #### `setVideoAttributes` - **videoAttributes** (ws.schild.jave.AudioAttributes) - Optional - Sets the video encoding attributes. If null, no video stream is included. #### `setFormat` - **format** (string) - Required - The container format for the encoded file (e.g., "avi", "mp4"). Must be supported by `getSupportedEncodingFormats()`. #### `setOffset` - **offset** (float) - Optional - The starting time in seconds from the source file for transcoding. Defaults to 0.0. #### `setDuration` - **duration** (float) - Optional - The duration in seconds of the source file to transcode. Defaults to the entire file duration. ``` -------------------------------- ### Gradle Dependencies for Jave2 (Linux 64Bit) Source: https://github.com/a-schild/jave2/blob/master/README.md Include these lines for Jave2's core and Linux 64-bit binaries in your Gradle project. ```Gradle compile group: 'ws.schild', name: 'jave-core', version: '3.5.0' compile group: 'ws.schild', name: 'jave-nativebin-linux64', version: '3.5.0' ``` -------------------------------- ### Convert Video to FLV Format Source: https://context7.com/a-schild/jave2/llms.txt Configures audio and video attributes for FLV output, including specific resolution and bitrate settings. ```java import ws.schild.jave.Encoder; import ws.schild.jave.MultimediaObject; import ws.schild.jave.encode.AudioAttributes; import ws.schild.jave.encode.VideoAttributes; import ws.schild.jave.encode.EncodingAttributes; import ws.schild.jave.info.VideoSize; import java.io.File; public class VideoToFlv { public static void main(String[] args) { File source = new File("/path/to/source.avi"); File target = new File("/path/to/target.flv"); // Audio settings AudioAttributes audio = new AudioAttributes(); audio.setCodec("libmp3lame"); audio.setBitRate(64000); audio.setChannels(1); audio.setSamplingRate(22050); // Video settings VideoAttributes video = new VideoAttributes(); video.setCodec("flv"); video.setBitRate(160000); video.setFrameRate(15); video.setSize(new VideoSize(400, 300)); // Encoding settings EncodingAttributes attrs = new EncodingAttributes(); attrs.setOutputFormat("flv"); attrs.setAudioAttributes(audio); attrs.setVideoAttributes(video); Encoder encoder = new Encoder(); try { encoder.encode(new MultimediaObject(source), target, attrs); System.out.println("Video conversion completed!"); } catch (Exception e) { e.printStackTrace(); } } } ``` -------------------------------- ### Create Smartphone Compatible Video Source: https://github.com/a-schild/jave2/wiki/Examples Encodes a video file into the 3GP format suitable for mobile devices. ```java File source = new File("source.avi"); File target = new File("target.3gp"); AudioAttributes audio = new AudioAttributes(); audio.setCodec("libfaac"); audio.setBitRate(new Integer(128000)); audio.setSamplingRate(new Integer(44100)); audio.setChannels(new Integer(2)); VideoAttributes video = new VideoAttributes(); video.setCodec("mpeg4"); video.setBitRate(new Integer(160000)); video.setFrameRate(new Integer(15)); video.setSize(new VideoSize(176, 144)); EncodingAttributes attrs = new EncodingAttributes(); attrs.setFormat("3gp"); attrs.setAudioAttributes(audio); attrs.setVideoAttributes(video); Encoder encoder = new Encoder(); encoder.encode(new MultimediaObject(source), target, attrs); ``` -------------------------------- ### Configure Encoding Attributes Source: https://github.com/a-schild/jave2/wiki/Usage Methods for setting audio, video, format, offset, and duration parameters within an EncodingAttributes instance. ```java public void setAudioAttributes(ws.schild.jave.AudioAttributes audioAttributes) ``` ```java public void setVideoAttributes(ws.schild.jave.AudioAttributes videoAttributes) ``` ```java public void setFormat(java.lang.String format) ``` ```java public void setOffset(java.lang.Float offset) ``` ```java public void setDuration(java.lang.Float duration) ``` -------------------------------- ### Gradle Dependency for Jave2 (all-deps) Source: https://github.com/a-schild/jave2/blob/master/README.md Use this line to add Jave2 with all supported platform binaries to your Gradle project. ```Gradle compile group: 'ws.schild', name: 'jave-all-deps', version: '3.5.0' ``` -------------------------------- ### EncoderProgressListener Interface Methods Source: https://github.com/a-schild/jave2/wiki/Usage Implement these methods to receive notifications about the transcoding process: source file analysis, progress updates, and messages. ```java public void sourceInfo(ws.schild.jave.MultimediaInfo info) ``` ```java public void progress(int permil) ``` ```java public void message(java.lang.String message) ``` -------------------------------- ### Gradle Dependency - All Platforms Source: https://context7.com/a-schild/jave2/llms.txt Add this line to your Gradle build file to include JAVE2 with all platform binaries. ```groovy implementation 'ws.schild:jave-all-deps:3.5.0' ``` -------------------------------- ### Extract Audio to WAV Source: https://github.com/a-schild/jave2/wiki/Examples Extracts audio from an AVI file and saves it as a PCM WAV file. ```java File source = new File("source.avi"); File target = new File("target.wav"); AudioAttributes audio = new AudioAttributes(); audio.setCodec("pcm_s16le"); EncodingAttributes attrs = new EncodingAttributes(); attrs.setFormat("wav"); attrs.setAudioAttributes(audio); Encoder encoder = new Encoder(); encoder.encode(new MultimediaObject(source), target, attrs); ``` -------------------------------- ### Convert Video to WebM Format Source: https://context7.com/a-schild/jave2/llms.txt Uses VP8 video and Vorbis audio codecs to encode video files for web streaming. ```java import ws.schild.jave.Encoder; import ws.schild.jave.MultimediaObject; import ws.schild.jave.encode.AudioAttributes; import ws.schild.jave.encode.VideoAttributes; import ws.schild.jave.encode.EncodingAttributes; import java.io.File; public class VideoToWebm { public static void main(String[] args) { File source = new File("/path/to/source.mov"); File target = new File("/path/to/target.webm"); AudioAttributes audio = new AudioAttributes(); audio.setCodec("libvorbis"); audio.setBitRate(192000); audio.setSamplingRate(44100); audio.setChannels(2); VideoAttributes video = new VideoAttributes(); video.setCodec("libvpx"); video.setBitRate(250000); video.setFrameRate(25); EncodingAttributes attrs = new EncodingAttributes(); attrs.setOutputFormat("webm"); attrs.setAudioAttributes(audio); attrs.setVideoAttributes(video); Encoder encoder = new Encoder(); try { encoder.encode(new MultimediaObject(source), target, attrs); System.out.println("WebM conversion completed!"); } catch (Exception e) { e.printStackTrace(); } } } ``` -------------------------------- ### Configure Advanced Encoding Options in JAVE2 Source: https://context7.com/a-schild/jave2/llms.txt Set specific audio/video codecs, bitrates, frame rates, and CRF. Control encoding speed with presets. Define output format, duration, and offset for partial encoding. Limit CPU usage by setting decoding and encoding threads. Optionally copy metadata from the source. ```java import ws.schild.jave.Encoder; import ws.schild.jave.MultimediaObject; import ws.schild.jave.encode.AudioAttributes; import ws.schild.jave.encode.VideoAttributes; import ws.schild.jave.encode.EncodingAttributes; import java.io.File; public class AdvancedEncodingOptions { public static void main(String[] args) { File source = new File("/path/to/source.mp4"); File target = new File("/path/to/clip.mp4"); AudioAttributes audio = new AudioAttributes(); audio.setCodec("aac"); audio.setBitRate(128000); audio.setVolume(512); // Double the volume (256 = no change) VideoAttributes video = new VideoAttributes(); video.setCodec("libx264"); video.setBitRate(2000000); video.setFrameRate(30); video.setCrf(23); // Constant Rate Factor (0-51) video.setPreset("medium"); // Encoding speed preset EncodingAttributes attrs = new EncodingAttributes(); attrs.setOutputFormat("mp4"); attrs.setAudioAttributes(audio); attrs.setVideoAttributes(video); // Extract 30 seconds starting at 10 seconds attrs.setOffset(10.0f); // Start at 10 seconds attrs.setDuration(30.0f); // Encode 30 seconds // Limit CPU usage attrs.setDecodingThreads(2); attrs.setEncodingThreads(2); // Copy metadata from source attrs.setMapMetaData(true); Encoder encoder = new Encoder(); try { encoder.encode(new MultimediaObject(source), target, attrs); System.out.println("Clip created successfully!"); } catch (Exception e) { e.printStackTrace(); } } } ``` -------------------------------- ### Retrieve Multimedia Metadata in Java Source: https://context7.com/a-schild/jave2/llms.txt Extracts detailed format, video, and audio information from a local file using MultimediaObject. ```java import ws.schild.jave.MultimediaObject; import ws.schild.jave.info.MultimediaInfo; import ws.schild.jave.info.VideoInfo; import ws.schild.jave.info.AudioInfo; import java.io.File; public class GetMediaInfo { public static void main(String[] args) { File mediaFile = new File("/path/to/video.mp4"); MultimediaObject mmObject = new MultimediaObject(mediaFile); try { MultimediaInfo info = mmObject.getInfo(); // General information System.out.println("Format: " + info.getFormat()); System.out.println("Duration: " + info.getDuration() + " ms"); // Video information VideoInfo videoInfo = info.getVideo(); if (videoInfo != null) { System.out.println("Video Codec: " + videoInfo.getDecoder()); System.out.println("Resolution: " + videoInfo.getSize().getWidth() + "x" + videoInfo.getSize().getHeight()); System.out.println("Frame Rate: " + videoInfo.getFrameRate() + " fps"); System.out.println("Video Bitrate: " + videoInfo.getBitRate() + " bps"); } // Audio information AudioInfo audioInfo = info.getAudio(); if (audioInfo != null) { System.out.println("Audio Codec: " + audioInfo.getDecoder()); System.out.println("Sampling Rate: " + audioInfo.getSamplingRate() + " Hz"); System.out.println("Channels: " + audioInfo.getChannels()); System.out.println("Audio Bitrate: " + audioInfo.getBitRate() + " bps"); } } catch (Exception e) { e.printStackTrace(); } } } ``` -------------------------------- ### Audio Encoding Attributes Source: https://github.com/a-schild/jave2/wiki/Usage Configuration for audio encoding within JAVE2. ```APIDOC ## AudioAttributes ### Description Represents audio encoding settings. ### Fields - **codec** (string) - Optional - The audio codec to use (e.g., "libmp3lame"). - **bitRate** (integer) - Optional - The audio bitrate in bits per second (e.g., 128000). - **sampleRate** (integer) - Optional - The audio sample rate in Hz (e.g., 44100). - **channels** (integer) - Optional - The number of audio channels (e.g., 2 for stereo). ``` -------------------------------- ### Implement EncoderProgressListener for Encoding Progress Source: https://context7.com/a-schild/jave2/llms.txt Implement the EncoderProgressListener interface to receive callbacks during the transcoding process. This listener provides information about the source media, encoding progress in permil (0-1000), and any messages from the encoder. ```java import ws.schild.jave.Encoder; import ws.schild.jave.MultimediaObject; import ws.schild.jave.encode.AudioAttributes; import ws.schild.jave.encode.EncodingAttributes; import ws.schild.jave.progress.EncoderProgressListener; import ws.schild.jave.info.MultimediaInfo; import java.io.File; public class EncodingWithProgress { public static void main(String[] args) { File source = new File("/path/to/source.wav"); File target = new File("/path/to/target.mp3"); // Custom progress listener EncoderProgressListener listener = new EncoderProgressListener() { @Override public void sourceInfo(MultimediaInfo info) { System.out.println("Source duration: " + info.getDuration() + " ms"); System.out.println("Source format: " + info.getFormat()); } @Override public void progress(int permil) { // permil ranges from 0 to 1000 double percent = permil / 10.0; System.out.printf("Progress: %.1f%%\n", percent); } @Override public void message(String message) { System.out.println("Encoder message: " + message); } }; AudioAttributes audio = new AudioAttributes(); audio.setCodec("libmp3lame"); audio.setBitRate(128000); audio.setChannels(2); audio.setSamplingRate(44100); EncodingAttributes attrs = new EncodingAttributes(); attrs.setOutputFormat("mp3"); attrs.setAudioAttributes(audio); Encoder encoder = new Encoder(); try { // Pass listener as fourth parameter encoder.encode(new MultimediaObject(source), target, attrs, listener); System.out.println("Encoding completed!"); } catch (Exception e) { e.printStackTrace(); } } } ``` -------------------------------- ### Execute Transcoding with encode() Source: https://github.com/a-schild/jave2/wiki/Usage The encode method is a blocking call that processes a source file into a target file based on provided encoding attributes. ```java public void encode(ws.schild.MultimediaObject source, java.io.File target, ws.schild.jave.EncodingAttributes attributes) throws java.lang.IllegalArgumentException, ws.schild.jave.InputFormatException, ws.schild.jave.EncoderException ``` -------------------------------- ### Generate AVI with MPEG4 and OGG Vorbis Source: https://github.com/a-schild/jave2/wiki/Examples Creates an AVI file using MPEG4/DivX video and OGG Vorbis audio encoding. ```java File source = new File("source.avi"); File target = new File("target.avi"); AudioAttributes audio = new AudioAttributes(); audio.setCodec("libvorbis"); VideoAttributes video = new VideoAttributes(); video.setCodec("mpeg4"); video.setTag("DIVX"); video.setBitRate(new Integer(160000)); video.setFrameRate(new Integer(30)); EncodingAttributes attrs = new EncodingAttributes(); attrs.setFormat("mpegvideo"); attrs.setAudioAttributes(audio); attrs.setVideoAttributes(video); Encoder encoder = new Encoder(); encoder.encode(new MultimediaObject(source), target, attrs); ``` -------------------------------- ### Extract Audio from Video to WAV Source: https://context7.com/a-schild/jave2/llms.txt Extract the audio stream from a video file and save it as a WAV file using the PCM codec. Ensure JAVE2 library is included. ```java import ws.schild.jave.Encoder; import ws.schild.jave.MultimediaObject; import ws.schild.jave.encode.AudioAttributes; import ws.schild.jave.encode.EncodingAttributes; import java.io.File; public class ExtractAudioToWav { public static void main(String[] args) { File source = new File("/path/to/video.avi"); File target = new File("/path/to/audio.wav"); AudioAttributes audio = new AudioAttributes(); audio.setCodec("pcm_s16le"); // PCM signed 16-bit little-endian EncodingAttributes attrs = new EncodingAttributes(); attrs.setOutputFormat("wav"); attrs.setAudioAttributes(audio); Encoder encoder = new Encoder(); try { encoder.encode(new MultimediaObject(source), target, attrs); System.out.println("Audio extraction completed!"); } catch (Exception e) { e.printStackTrace(); } } } ``` -------------------------------- ### Audio Encoding Attributes Source: https://github.com/a-schild/jave2/wiki/Encoding-Attributes Configuration methods for the ws.schild.jave.AudioAttributes class to define audio stream transcoding parameters. ```APIDOC ## AudioAttributes Configuration ### Description Configures audio stream transcoding settings such as codec, bitrate, sampling rate, channels, and volume. ### Request Body - **codec** (String) - Optional - Name of the codec or AudioAttributes.DIRECT_STREAM_COPY. - **bitRate** (Integer) - Optional - Bitrate in bits per second. - **samplingRate** (Integer) - Optional - Sampling rate in hertz. - **channels** (Integer) - Optional - Number of channels (1 for mono, 2 for stereo). - **volume** (Integer) - Optional - Volume adjustment (256 is neutral, <256 decrease, >256 increase). ``` -------------------------------- ### Encode with Progress Listener Source: https://github.com/a-schild/jave2/wiki/Usage Use this method signature to pass an `EncoderProgressListener` to the encoder for monitoring progress. ```java public void encode(ws.schild.jave.MultimediaObject source, java.io.File target, ws.schild.jave.EncodingAttributes attributes, ws.schild.jave.EncoderProgressListener listener) throws java.lang.IllegalArgumentException, ws.schild.jave.InputFormatException, ws.schild.jave.EncoderException ``` -------------------------------- ### Maven Dependency - All Platforms Source: https://context7.com/a-schild/jave2/llms.txt Include this dependency to add JAVE2 with all platform binaries to your Maven project. ```xml ws.schild jave-all-deps 3.5.0 ``` -------------------------------- ### Maven Dependency for Jave2 (all-deps) Source: https://github.com/a-schild/jave2/blob/master/README.md Include this dependency to add Jave2 with all supported platform binaries to your Maven project. ```XML ws.schild jave-all-deps 3.5.0 ``` -------------------------------- ### MultimediaObject.getInfo() Source: https://github.com/a-schild/jave2/wiki/Usage Retrieves metadata information about a multimedia file or stream. ```APIDOC ## getInfo() ### Description Analyzes a multimedia file or URL and returns a MultimediaInfo object containing details about the container, audio streams, and video streams. ### Method Java Method Call ### Response - **MultimediaInfo** (ws.schild.jave.MultimediaInfo) - Object containing container, audio, and video stream details. ``` -------------------------------- ### Encoding Performance Settings Source: https://github.com/a-schild/jave2/wiki/Encoding-Attributes Configuration for limiting CPU usage during the encoding process. ```APIDOC ## Encoding Performance ### Description Limits CPU usage by specifying the number of threads for decoding and encoding processes. ### Request Body - **decodingThreads** (Integer) - Optional - Number of threads for decoding. - **encodingThreads** (Integer) - Optional - Number of threads for encoding. ``` -------------------------------- ### Extract Multiple Screenshots from Video Source: https://context7.com/a-schild/jave2/llms.txt Use ScreenExtractor to generate thumbnail images from a video at regular intervals. Specify output directory, filename prefix, image extension, and quality. ```java import ws.schild.jave.ScreenExtractor; import ws.schild.jave.MultimediaObject; import java.io.File; public class ExtractScreenshots { public static void main(String[] args) { File videoFile = new File("/path/to/video.mp4"); File outputDir = new File("/path/to/thumbnails"); MultimediaObject mmObject = new MultimediaObject(videoFile); ScreenExtractor extractor = new ScreenExtractor(); try { // Extract screenshots every 10 seconds extractor.render( mmObject, 320, // width (-1 for original) 240, // height (ignored if width is -1) 10, // interval in seconds outputDir, // output directory "thumb", // filename prefix "jpg", // image extension 2 // quality (1-31, lower is better) ); System.out.println("Extracted " + extractor.getNumberOfScreens() + " screenshots"); } catch (Exception e) { e.printStackTrace(); } } } ``` -------------------------------- ### Maven Dependency for Jave2 (Windows 64Bit) Source: https://github.com/a-schild/jave2/blob/master/README.md Include this dependency for Jave2's Windows 64-bit binaries in your Maven project. ```XML ws.schild jave-nativebin-win64 3.5.0 ``` -------------------------------- ### Convert Audio to MP3 Source: https://context7.com/a-schild/jave2/llms.txt Transcode an audio file to MP3 format using specified bitrate, channels, and sampling rate. Requires Java 8+ and JAVE2 library. ```java import ws.schild.jave.Encoder; import ws.schild.jave.MultimediaObject; import ws.schild.jave.encode.AudioAttributes; import ws.schild.jave.encode.EncodingAttributes; import java.io.File; public class AudioToMp3 { public static void main(String[] args) { File source = new File("/path/to/source.wav"); File target = new File("/path/to/target.mp3"); // Configure audio attributes AudioAttributes audio = new AudioAttributes(); audio.setCodec("libmp3lame"); // MP3 codec audio.setBitRate(128000); // 128 kbps audio.setChannels(2); // Stereo audio.setSamplingRate(44100); // 44.1 kHz (CD quality) // Configure encoding attributes EncodingAttributes attrs = new EncodingAttributes(); attrs.setOutputFormat("mp3"); attrs.setAudioAttributes(audio); // Perform encoding Encoder encoder = new Encoder(); try { encoder.encode(new MultimediaObject(source), target, attrs); System.out.println("Encoding completed successfully!"); } catch (Exception e) { e.printStackTrace(); } } } ``` -------------------------------- ### Maven Dependency for Jave2 (MACOS 64Bit) Source: https://github.com/a-schild/jave2/blob/master/README.md Include this dependency for Jave2's macOS 64-bit binaries in your Maven project. ```XML ws.schild jave-nativebin-osx64 3.5.0 ``` -------------------------------- ### Set Audio Encoding Attributes Source: https://github.com/a-schild/jave2/wiki/Encoding-Attributes Methods for configuring audio stream properties such as codec, bitrate, sampling rate, channels, and volume. ```java public void setCodec(java.lang.String codec) ``` ```java public void setBitRate(java.lang.Integer bitRate) ``` ```java public void setSamplingRate(java.lang.Integer bitRate) ``` ```java public void setChannels(java.lang.Integer channels) ``` ```java public void setVolume(java.lang.Integer volume) ``` -------------------------------- ### Convert AVI to FLV with MP3 Audio Source: https://github.com/a-schild/jave2/wiki/Examples Transcodes an AVI file to an FLV container with specific audio and video encoding settings. ```java File source = new File("source.avi"); File target = new File("target.flv"); AudioAttributes audio = new AudioAttributes(); audio.setCodec("libmp3lame"); audio.setBitRate(new Integer(64000)); audio.setChannels(new Integer(1)); audio.setSamplingRate(new Integer(22050)); VideoAttributes video = new VideoAttributes(); video.setCodec("flv"); video.setBitRate(new Integer(160000)); video.setFrameRate(new Integer(15)); video.setSize(new VideoSize(400, 300)); EncodingAttributes attrs = new EncodingAttributes(); attrs.setFormat("flv"); attrs.setAudioAttributes(audio); attrs.setVideoAttributes(video); Encoder encoder = new Encoder(); encoder.encode(new MultimediaObject(source), target, attrs); ``` -------------------------------- ### Set Video Encoding Attributes Source: https://github.com/a-schild/jave2/wiki/Encoding-Attributes Methods for configuring video stream properties including codec, tag, bitrate, frame rate, and size. ```java public void setCodec(java.lang.String codec) ``` ```java public void setTag(java.lang.String tag) ``` ```java public void setBitRate(java.lang.Integer bitRate) ``` ```java public void setFrameRate(java.lang.Integer bitRate) ``` ```java public void setSize(ws.schild.jave.VideoSize size) ``` -------------------------------- ### Video Encoding Attributes Source: https://github.com/a-schild/jave2/wiki/Usage Configuration for video encoding within JAVE2. ```APIDOC ## VideoAttributes ### Description Represents video encoding settings. ### Fields - **codec** (string) - Optional - The video codec to use (e.g., "mpeg4"). - **bitRate** (integer) - Optional - The video bitrate in bits per second (e.g., 1600000). - **frameRate** (integer) - Optional - The video frame rate (frames per second, e.g., 25). - **size** (object) - Optional - The video resolution. - **width** (integer) - Required if size is specified - The video width in pixels. - **height** (integer) - Required if size is specified - The video height in pixels. ``` -------------------------------- ### Maven Dependency for Jave2 (Linux 64Bit amd/intel) Source: https://github.com/a-schild/jave2/blob/master/README.md Include this dependency for Jave2's Linux 64-bit binaries (amd/intel) in your Maven project. ```XML ws.schild jave-nativebin-linux64 3.5.0 ``` -------------------------------- ### Video Encoding Attributes Source: https://github.com/a-schild/jave2/wiki/Encoding-Attributes Configuration methods for the ws.schild.jave.VideoAttributes class to define video stream transcoding parameters. ```APIDOC ## VideoAttributes Configuration ### Description Configures video stream transcoding settings including codec, tag/fourcc, bitrate, frame rate, and dimensions. ### Request Body - **codec** (String) - Optional - Name of the codec or VideoAttributes.DIRECT_STREAM_COPY. - **tag** (String) - Optional - Tag/fourcc value for the stream. - **bitRate** (Integer) - Optional - Bitrate in bits per second. - **frameRate** (Integer) - Optional - Frame rate in frames per second. - **size** (VideoSize) - Optional - Video dimensions (width and height). ``` -------------------------------- ### Apply Scale Filter to Resize Video Source: https://context7.com/a-schild/jave2/llms.txt Use video filters to resize video during encoding while maintaining aspect ratio. Configure audio and video attributes, including the scale filter, and specify the output format. ```java import ws.schild.jave.Encoder; import ws.schild.jave.MultimediaObject; import ws.schild.jave.encode.AudioAttributes; import ws.schild.jave.encode.VideoAttributes; import ws.schild.jave.encode.EncodingAttributes; import ws.schild.jave.filters.ScaleFilter; import ws.schild.jave.filters.helpers.ForceOriginalAspectRatio; import ws.schild.jave.info.VideoSize; import java.io.File; public class ResizeVideoWithFilter { public static void main(String[] args) { File source = new File("/path/to/source.mp4"); File target = new File("/path/to/resized.mp4"); AudioAttributes audio = new AudioAttributes(); audio.setCodec(AudioAttributes.DIRECT_STREAM_COPY); // Copy audio stream VideoAttributes video = new VideoAttributes(); video.setCodec("libx264"); video.setBitRate(1000000); video.setFrameRate(30); // Add scale filter to resize to 1280x720 while maintaining aspect ratio ScaleFilter scaleFilter = new ScaleFilter( new VideoSize(1280, 720), ForceOriginalAspectRatio.DECREASE ); video.addFilter(scaleFilter); EncodingAttributes attrs = new EncodingAttributes(); attrs.setOutputFormat("mp4"); attrs.setAudioAttributes(audio); attrs.setVideoAttributes(video); Encoder encoder = new Encoder(); try { encoder.encode(new MultimediaObject(source), target, attrs); System.out.println("Video resized successfully!"); } catch (Exception e) { e.printStackTrace(); } } } ``` -------------------------------- ### Maven Dependency for Jave2 (Linux 64Bit arm) Source: https://github.com/a-schild/jave2/blob/master/README.md Include this dependency for Jave2's Linux 64-bit ARM binaries in your Maven project. ```XML ws.schild jave-nativebin-linux-arm64 3.5.0 ``` -------------------------------- ### Convert WAV to MP3 Source: https://github.com/a-schild/jave2/wiki/Examples Encodes a WAV audio file into a 128 kbit/s stereo MP3 file. ```java File source = new File("source.wav"); File target = new File("target.mp3"); AudioAttributes audio = new AudioAttributes(); audio.setCodec("libmp3lame"); audio.setBitRate(new Integer(128000)); audio.setChannels(new Integer(2)); audio.setSamplingRate(new Integer(44100)); EncodingAttributes attrs = new EncodingAttributes(); attrs.setFormat("mp3"); attrs.setAudioAttributes(audio); Encoder encoder = new Encoder(); encoder.encode(new MultimediaObject(source), target, attrs); ``` -------------------------------- ### Maven Dependency for Jave2 (Linux 32Bit arm) Source: https://github.com/a-schild/jave2/blob/master/README.md Include this dependency for Jave2's Linux 32-bit ARM binaries in your Maven project. ```XML ws.schild jave-nativebin-linux-arm32 3.5.0 ``` -------------------------------- ### Encoder.encode() Source: https://github.com/a-schild/jave2/wiki/Usage Initiates a transcoding operation with an optional progress listener to track status and receive notifications. ```APIDOC ## encode(source, target, attributes, listener) ### Description Executes the transcoding process from a source multimedia object to a target file, using specified encoding attributes and an optional progress listener. ### Method Java Method Call ### Parameters - **source** (ws.schild.MultimediaObject) - Required - The input multimedia file or URL. - **target** (java.io.File) - Required - The destination file path. - **attributes** (ws.schild.jave.EncodingAttributes) - Required - Configuration for the encoding process. - **listener** (ws.schild.jave.EncoderProgressListener) - Optional - Interface to receive progress updates and messages. ### Exceptions - **IllegalArgumentException** - Thrown if encoding attributes are invalid. - **InputFormatException** - Thrown if the source format is unsupported. - **EncoderException** - Thrown if an internal error occurs during transcoding. ``` -------------------------------- ### Extract Single Screenshot at Specific Time Source: https://context7.com/a-schild/jave2/llms.txt Capture a single frame from a video at a precise timestamp in milliseconds. Specify the output file and desired quality. ```java import ws.schild.jave.ScreenExtractor; import ws.schild.jave.MultimediaObject; import java.io.File; public class ExtractSingleScreenshot { public static void main(String[] args) { File videoFile = new File("/path/to/video.mp4"); File outputFile = new File("/path/to/screenshot.jpg"); MultimediaObject mmObject = new MultimediaObject(videoFile); ScreenExtractor extractor = new ScreenExtractor(); try { // Extract one frame at 30 seconds (30000 ms) extractor.renderOneImage( mmObject, 640, // width (-1 for original) 480, // height 30000, // time in milliseconds outputFile, // output file 1 // quality (1-31, lower is better) ); System.out.println("Screenshot saved to: " + outputFile.getAbsolutePath()); } catch (Exception e) { e.printStackTrace(); } } } ``` -------------------------------- ### Convert Video to 3GP Format Source: https://context7.com/a-schild/jave2/llms.txt Encodes video into a mobile-friendly 3GP format with specific resolution and codec requirements. ```java import ws.schild.jave.Encoder; import ws.schild.jave.MultimediaObject; import ws.schild.jave.encode.AudioAttributes; import ws.schild.jave.encode.VideoAttributes; import ws.schild.jave.encode.EncodingAttributes; import ws.schild.jave.info.VideoSize; import java.io.File; public class VideoTo3gp { public static void main(String[] args) { File source = new File("/path/to/source.avi"); File target = new File("/path/to/target.3gp"); AudioAttributes audio = new AudioAttributes(); audio.setCodec("aac"); audio.setBitRate(128000); audio.setSamplingRate(44100); audio.setChannels(2); VideoAttributes video = new VideoAttributes(); video.setCodec("mpeg4"); video.setBitRate(160000); video.setFrameRate(15); video.setSize(new VideoSize(176, 144)); EncodingAttributes attrs = new EncodingAttributes(); attrs.setOutputFormat("3gp"); attrs.setAudioAttributes(audio); attrs.setVideoAttributes(video); Encoder encoder = new Encoder(); try { encoder.encode(new MultimediaObject(source), target, attrs); System.out.println("3GP conversion completed!"); } catch (Exception e) { e.printStackTrace(); } } } ``` -------------------------------- ### Transcode AVI with Direct Stream Copy Source: https://github.com/a-schild/jave2/wiki/Examples Re-encodes the audio stream of an AVI file while performing a direct stream copy of the video. ```java File source = new File("source.avi"); File target = new File("target.avi"); AudioAttributes audio = new AudioAttributes(); audio.setCodec("libmp3lame"); audio.setBitRate(new Integer(56000)); audio.setChannels(new Integer(1)); audio.setSamplingRate(new Integer(22050)); VideoAttributes video = new VideoAttributes(); video.setCodec(VideoAttributes.DIRECT_STREAM_COPY); EncodingAttributes attrs = new EncodingAttributes(); attrs.setFormat("avi"); attrs.setAudioAttributes(audio); attrs.setVideoAttributes(video); Encoder encoder = new Encoder(); encoder.encode(new MultimediaObject(source), target, attrs); ``` -------------------------------- ### Limit CPU Usage for Encoding Source: https://github.com/a-schild/jave2/wiki/Encoding-Attributes Configure the number of threads used for decoding and encoding processes. ```java EncodingAttributes attrs= new EncodingAttributes(); attrs.setDecodingThreads(2); attrs.setEncodingThreads(2); ``` -------------------------------- ### Maven Dependency for Jave2 (core) Source: https://github.com/a-schild/jave2/blob/master/README.md Add the jave-core dependency for platform-independent Java code in your Maven project. ```XML ws.schild jave-core 3.5.0 ``` -------------------------------- ### Run JAVE2 Conversion in a Separate Thread Source: https://github.com/a-schild/jave2/blob/master/Examples.md Use this snippet to run the encoder in a separate thread, allowing for abortion. This feature is available in version 2.4.4 and later. Ensure proper exception handling for `EncoderException`. ```JAVA ... prepare the encoder just as usual and then start it in a thread ... Runnable task = () -> { try { encoder.encode(new MultimediaObject(source), target, attrs, listener); // Conversion finished, continue with your code } catch (EncoderException ex) { // Unexpected exception in encoder } }; Thread thread = new Thread(task); thread.start(); TimeUnit.MILLISECONDS.sleep(100); encoder.abortEncoding(); ```