### 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();
```