使用jave1.0.2.jar進行音視訊轉碼
直接上程式碼:
package com.roots.cloudserver.util;
import it.sauronsoftware.jave.AudioAttributes;
import it.sauronsoftware.jave.Encoder;
import it.sauronsoftware.jave.EncoderException;
import it.sauronsoftware.jave.EncodingAttributes;
import it.sauronsoftware.jave.InputFormatException;
import it.sauronsoftware.jave.MultimediaInfo;
import it.sauronsoftware.jave.VideoAttributes;
import it.sauronsoftware.jave.VideoSize;
import java.io.File;
/**
* 使用jave1.0.2.jar進行轉碼截幀
* @author chengjs
*
*/
public class MediaInfo {
public static boolean flag = true;
/**
* 視訊轉碼
* 因轉碼出來不是H264的視訊編碼所以此方法棄用
* @param source
* @param targetPath
* @return
*/
public static boolean transcodingToMP4(File source,String targetPath){
//File source = new File("C:/Users/Administrator/Downloads/廚房裡的爆炸案.mpg");
File target = new File(targetPath);
AudioAttributes audio = new AudioAttributes();// 音訊屬性
audio.setCodec("libmp3lame");// libmp3lame 音訊編碼
audio.setBitRate(new Integer(128000));// 音訊位元率
audio.setChannels(new Integer(1));// 聲道
audio.setSamplingRate(new Integer(44100));// 取樣率
VideoAttributes video = new VideoAttributes();// 視訊屬性
video.setCodec("libxvid");// 視訊編碼
video.setBitRate(new Integer(2048000));// 視訊位元率
video.setFrameRate(new Integer(18));// 幀率 1f/s幀頻,1是目前測試比較清楚的,越大越模糊
//video.setSize(new VideoSize(1920,1080));// 視訊寬高
EncodingAttributes attrs = new EncodingAttributes();// 轉碼屬性
attrs.setFormat("mp4");// 轉碼格式
attrs.setAudioAttributes(audio);// 音訊屬性
attrs.setVideoAttributes(video);// 視訊屬性
Encoder encoder = new Encoder();// 建立解碼器
long beginTime = System.currentTimeMillis();
try {
// 獲取時長
MultimediaInfo m = encoder.getInfo(source);
System.out.println(m.getDuration()/1000 + "秒");
System.out.println("獲取時長花費時間是:" + ((System.currentTimeMillis() - beginTime))/1000 + "秒");
beginTime = System.currentTimeMillis();
encoder.encode(source, target, attrs);
System.out.println("視訊轉碼花費時間是:" + ((System.currentTimeMillis() - beginTime)/1000) + "秒");
flag = true;
} catch (IllegalArgumentException e) {
flag = false;
e.printStackTrace();
} catch (InputFormatException e) {
flag = false;
e.printStackTrace();
} catch (EncoderException e) {
flag = false;
e.printStackTrace();
}
return flag;
}
/**
* 音訊轉碼 轉成MP3格式
* @param source
* @param targetPath
* @return
*/
public static boolean transcodingToMP3(File source,String targetPath){
//File source = new File("C:/Users/Administrator/Downloads/廚房裡的爆炸案.mpg");
File target = new File(targetPath);
AudioAttributes audio = new AudioAttributes();// 音訊屬性
audio.setCodec("libmp3lame");// libmp3lame 音訊編碼
audio.setBitRate(new Integer(128000));// 音訊位元率
audio.setChannels(new Integer(1));// 聲道
audio.setSamplingRate(new Integer(44100));// 取樣率
EncodingAttributes attrs = new EncodingAttributes();// 視訊屬性
attrs.setFormat("mp3");// 轉碼格式
attrs.setAudioAttributes(audio);// 音訊屬性
Encoder encoder = new Encoder();// 建立解碼器
long beginTime = System.currentTimeMillis();
try {
// 獲取時長
MultimediaInfo m = encoder.getInfo(source);
System.out.println(m.getDuration()/1000 + "秒");
System.out.println("獲取時長花費時間是:" + ((System.currentTimeMillis() - beginTime))/1000 + "秒");
beginTime = System.currentTimeMillis();
encoder.encode(source, target, attrs);
System.out.println("音訊轉碼花費時間是:" + ((System.currentTimeMillis() - beginTime)/1000) + "秒");
flag = true;
} catch (IllegalArgumentException e) {
flag = false;
e.printStackTrace();
} catch (InputFormatException e) {
flag = false;
e.printStackTrace();
} catch (EncoderException e) {
flag = false;
e.printStackTrace();
}
return flag;
}
/**
* 擷取第一幀作為縮圖
* @param source
* @param targetPath
* @return
*/
public static boolean interceptionToJPG(File source,String targetPath){
//File source = new File("C:/Users/Administrator/Downloads/火箭少女101 - 卡路里.mp4");
File target = new File(targetPath);// 轉圖片
VideoAttributes video = new VideoAttributes();// 視訊屬性
video.setCodec("mjpeg");// 圖片編碼
video.setSize(new VideoSize(1200, 800));// 設定圖片寬高
EncodingAttributes attrs = new EncodingAttributes();// 轉碼屬性
attrs.setFormat("image2");// 轉碼格式
attrs.setOffset(3f);// 設定偏移位置,即開始轉碼位置(3秒)
attrs.setDuration(0.01f);// 設定轉碼持續時間(1秒)
attrs.setVideoAttributes(video);
Encoder encoder = new Encoder();
long beginTime = System.currentTimeMillis();
try {
//獲取時長
MultimediaInfo m = encoder.getInfo(source);
System.out.println(m.getDuration());
System.out.println("獲取時長花費時間是:" + (System.currentTimeMillis() - beginTime));
beginTime = System.currentTimeMillis();
encoder.encode(source, target, attrs);
System.out.println("圖片轉碼花費時間是:" + (System.currentTimeMillis() - beginTime));
flag = true;
} catch (IllegalArgumentException e) {
flag = false;
e.printStackTrace();
} catch (InputFormatException e) {
flag = false;
e.printStackTrace();
} catch (EncoderException e) {
flag = false;
e.printStackTrace();
}
return flag;
}
public static Long getTime(File file) throws InputFormatException, EncoderException{
Encoder encoder = new Encoder();
MultimediaInfo m = encoder.getInfo(file);
long lengthOfTime = m.getDuration()/1000;
return lengthOfTime;
}
public static void main(String[] args) {
String fileOut = "E://30.mp4";
File file2 = new File(fileOut);
boolean flag1 = transcodingToMP3(file2,"C://別人家的小孩 .mp3");
boolean flag2 = interceptionToJPG(file2,"C://別人家的小孩 .jpg");
}
}
相關文章
- 使用MediaCodec硬解碼h.265視訊及音訊進行播放音訊
- 如何給視訊格式的檔案進行格式轉換 可以轉為音訊格式嗎?音訊
- Android 音視訊開發 視訊編碼,音訊編碼格式Android音訊
- Android 音視訊 - MediaCodec 編解碼音視訊Android
- iOS開發系列--音訊播放、錄音、視訊播放、拍照、視訊錄製(轉)iOS音訊
- 各種音訊視訊編碼方法音訊
- iOS 視訊剪下、旋轉,視訊新增音訊、新增水印,視訊匯出iOS音訊
- 短視訊“音訊化”,音樂“視訊化”音訊
- 使用FFmpeg處理音視訊
- web音訊流轉發之音視訊直播Web音訊
- windows下利用ffmpeg進行視訊格式轉換Windows
- 音視訊--音訊入門音訊
- 音視訊–音訊入門音訊
- 使用科大訊飛語音轉文字的服務進行電話錄音分析
- 《音視訊開發進階指南》讀書筆記(一) —— 音視訊基礎概念筆記
- 音視訊--視訊入門
- Android音視訊之MediaPlayer音視訊播放Android
- 音視訊開發-全網最全常用音視訊編碼和格式彙總
- 轉載:iOS音視訊實時採集硬體編碼iOS
- 音視訊格式轉換器Permute 3
- 科學音訊處理(二):如何使用 Octave 對音訊檔案進行基本數學訊號處理音訊
- 基於surging 如何利用peerjs進行語音視訊通話JS
- Android音視訊之MediaRecorder音視訊錄製Android
- 使用樹莓派進行24小時視訊直播樹莓派
- 視音訊播放音訊
- Tetrate - 使用Istio進行gRPC轉碼RPC
- 在.NET中使用Speex -- 音訊資料編解碼 (轉)音訊
- 音視訊入門之音訊採集、編碼、播放音訊
- 音視訊格式轉換器Permute 3 macMac
- ffmpeg音訊編碼之pcm轉碼aac音訊
- 資訊檢視:音訊消費行為研究音訊
- IOS音視訊(二)AVFoundation視訊捕捉iOS
- iOS開發:音訊播放、錄音、視訊播放、拍照、視訊錄製iOS音訊
- 使用 JavaScript 進行單詞發音JavaScript
- FFMPEG視音訊編解碼學習(1)音訊
- 阿里雲視訊雲推出低程式碼音視訊工廠vPaaS阿里
- [C#] NAudio 庫的各種常用使用方式: 播放 錄製 轉碼 音訊視覺化C#音訊視覺化
- 小程式音訊和視訊音訊