使用 JAVE 對音視頻轉碼

jopen 9年前發布 | 38K 次閱讀 JAVE 多媒體處理

JAVE (Java Audio Video Encoder) 類庫是一個 ffmpeg 項目的 Java 語言封裝。開發人員可以使用JAVE 在不同的格式間轉換視頻和音頻。例如將 AVI 轉成 MPEG 動畫,等等 ffmpeg 中可以完成的在 JAVE 都有對應的方法。 摘要 JAVE (Java Audio Video Encoder) 類庫是一個 ffmpeg 項目的 Java 語言封裝。開發人員可以使用JAVE 在不同的格式間轉換視頻和音頻。例如將 AVI 轉成 MPEG 動畫,等等 ffmpeg 中可以完成的在 JAVE 都有對應的方法。

JAVE 官方的jar包帶了ffmpeg的exe程序,所以在windows上可以直接使用,但是如果要在Linux上用就得先把ffmpeg的環境裝好。

官方的jar包在這里下載:http://www.sauronsoftware.it/projects/jave/download.php

在這里列幾個官方的demo:

1、From a generic AVI to a 油Tube-like FLV movie, with an embedded MP3 audio stream:

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(source, target, attrs);



2、 Next lines extracts audio informations from an AVI and store them in a plain WAV file:
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(source, target, attrs);



3、 Next example takes an audio WAV file and generates a 128 kbit/s, stereo, 44100 Hz MP3 file:
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(source, target, attrs);



4、 Next one decodes a generic AVI file and creates another one with the same video stream of the source and a re-encoded low quality MP3 audio stream:
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(source, target, attrs);



5、 Next one generates an AVI with MPEG 4/DivX video and OGG Vorbis audio:
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(source, target, attrs);



6、A smartphone suitable video:

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(source, target, attrs);



簡單來說,其實JAVE就是個工具類,封裝了ffmpeg的轉換命令,不用自己拼接命令參數,簡化了使用ffmpeg的操作步驟,大家有興趣的話,可以看下源碼,自己擴展優化。

這里發兩個其它的博客地址,大家可以參考下:

http://mfan.iteye.com/blog/2032454

http://blog.csdn.net/qllinhongyu/article/details/29817297

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!