導航:首頁 > 編程語言 > java調用ffmpeg

java調用ffmpeg

發布時間:2022-11-21 22:59:38

㈠ 怎麼用java讀取ffmpeg輸出流

public static void main(String[] args) {

String result = processFLV("E:\\test\\京視傳媒\\體育類\\xiao.flv");

PatternCompiler compiler =new Perl5Compiler();
try {
String regexDuration ="Duration: (.*?), start: (.*?), bitrate: (\\d*) kb\\/s";
String regexVideo ="Video: (.*?), (.*?), (.*?)[,\\s]";
String regexAudio ="Audio: (\\w*), (\\d*) Hz";

Pattern patternDuration = compiler.compile(regexDuration,Perl5Compiler.CASE_INSENSITIVE_MASK);
PatternMatcher matcherDuration = new Perl5Matcher();
if(matcherDuration.contains(result, patternDuration)){
MatchResult re = matcherDuration.getMatch();

System.out.println("提取出播放時間 ===" +re.group(1));
System.out.println("開始時間 =====" +re.group(2));
System.out.println("bitrate 碼率 單位 kb==" +re.group(3));
}

Pattern patternVideo = compiler.compile(regexVideo,Perl5Compiler.CASE_INSENSITIVE_MASK);
PatternMatcher matcherVideo = new Perl5Matcher();

if(matcherVideo.contains(result, patternVideo)){
MatchResult re = matcherVideo.getMatch();
System.out.println("編碼格式 ===" +re.group(1));
System.out.println("視頻格式 ===" +re.group(2));
System.out.println(" 解析度 == =" +re.group(3));
}

Pattern patternAudio = compiler.compile(regexAudio,Perl5Compiler.CASE_INSENSITIVE_MASK);
PatternMatcher matcherAudio = new Perl5Matcher();

if(matcherAudio.contains(result, patternAudio)){
MatchResult re = matcherAudio.getMatch();
System.out.println("音頻編碼 ===" +re.group(1));
System.out.println("音頻采樣頻率 ===" +re.group(2));
}

} catch (MalformedPatternException e) {
e.printStackTrace();
}

}

// ffmpeg能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等)
private static String processFLV(String inputPath) {
/*
if (!checkfile(inputPath)){
_log.warn(inputPath+" is not file");
return false;
}
*/
List<String> commend=new java.util.ArrayList<String>();

// commend.add("e:\\videoconver\\ffmpeg\\ffmpeg ");//可以設置環境變數從而省去這行
commend.add("ffmpeg");
commend.add("-i");
commend.add(inputPath);

try {

ProcessBuilder builder = new ProcessBuilder();
builder.command(commend);
builder.redirectErrorStream(true);
Process p= builder.start();

//1. start
BufferedReader buf = null; // 保存ffmpeg的輸出結果流
String line = null;
//read the standard output

buf = new BufferedReader(new InputStreamReader(p.getInputStream()));

StringBuffer sb= new StringBuffer();
while ((line = buf.readLine()) != null) {
System.out.println(line);
sb.append(line);
continue;
}
int ret = p.waitFor();//這里線程阻塞,將等待外部轉換進程運行成功運行結束後,才往下執行
//1. end
return sb.toString();
} catch (Exception e) {
// System.out.println(e);
return null;
}
}

㈡ 在Java中怎樣把所有的視頻都轉換成flv格式

解決方案一:

java調用ffmpeg執行視頻轉換

ffmpeg.exe能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等)

對ffmpeg.exe無法解析的文件格式(wmv9,rm,rmvb等),

可以先用別的工具(mencoder)轉換為avi(ffmpeg能解析的)格式;

mencoder.exe;drv43260.dll;pncrt.dll這3個文件是為文件格式(wmv9,rm,rmvb等)

轉換為avi(ffmpeg能解析的)格式准備的;再把轉換好的avi文件再用ffmpeg.exe轉換成flv格式的視頻文件。。。

缺點: 要裝第三方東西

解決方案二

用jmf。編程以前,你需要安裝JMF。

而且 jmf 不支持 所有平台

㈢ java如何截取視頻的幀,生成一個圖片

就是可以使用ffmpeg,下載ffmpeg相關組件到電腦中,然後用java調用命令的方式(RunTime.exec相關方法),使用ffmpeg的功能。

㈣ 請教大神,java調用ffmpeg,將兩段.wav音頻,拼接成一段.wav音頻,怎麼做

  1. ffmpeg是c實現的,java想調它的api,起碼要寫一層jni出來,直接在jni層調用ffmpeg的api,然拋到java層去invoke.

  2. 當然還有一種,直接用命令實現,首先你需要編譯出可以在你當前環境上運行的ffmpeg,然後配置好拼接音頻的參數,使用Runtime的exec來執行這個命令,這種方法雖然簡單,但是一旦換個執行環境可能就沒有辦法使用你本機編譯的ffmpeg了,所以不推薦。

㈤ 使用JAVA調用ffmpeg組件進行視頻轉換時不成功

FFMPEG沒有java可以直接調用的API,網上那些基本上是通過調用cmd命令來實現轉換的。這種方法很容易出錯,效率低而且也不容易調試。最好的辦法是讓提供商提供flv格式的文件。如果不行你只有測試一下直接用FFMPEG的圖形界面轉看結果如何,然後嘗試更換參數,視頻文件和FFMPEG版本。

㈥ 通過ffmpeg實現視頻流截圖

最近忙於新產品技術點突破,針對架構摸索暫時停住。目前需要解決的問題是如何從視頻流中截取一張圖。

在安防領域有各種視頻監控產品,它們遵循的通訊協議也不盡相同,歸納起來主要遵循GB/T 28181、ONVIF、PSIA等協議。

其通信協議如下所示

在CentOS7上安裝ffmpeg

腳本正確調用,接下來就通過Java調用遠程伺服器上腳本實現視頻流截圖,在此藉助 Ganymed SSH-2 for Java ,實現SSH遠程執行腳本。

通過SSH遠程執行腳本有點簡單粗暴,何不將這截圖功能做成服務,向外發布,更加靈活方便。故後期工作如下:
准備一台圖片伺服器,其主要職責有
1.圖片文件存儲
2.響應終端的抓圖請求,並將圖片保存到指定文件夾目錄下
3.響應終端的合圖請求,以上兩者做成服務的形式,終端通過分布式調用服務,完成操作並返回結果狀態
4.接收終端上傳的圖片
硬體需求:
1.因圖片伺服器上安裝ffmpeg工具,其需要對視頻流進行解碼,並按照png格式組織編碼,對計算性能要求高,所以CPU性能要好
2.作為圖片文件存儲伺服器,存儲容量要大
3.接受多終端設備連接,網口帶寬要大

因為要接收反饋結果,cmd命令可以這樣寫

當ffmpeg執行正確時,會輸出succeeded,當ffmpeg不能正確執行時,會輸出failed

新建目錄文件夾,將截圖文件放入指定文件夾中

㈦ java調取ffmpeg總是彈出命令窗口,我部署到伺服器上應該怎麼做

你寫的web應用 還是普通java應用呢
web應用的話可以用tomcat,java應用 直接有jre就可以的
我用的是小鳥雲的伺服器,性能穩定,性價比高。

㈧ java使用ffmpeg進行視頻截圖,不成功,程序也沒報錯!

我用的是基於C++的ffmpeg開發,ffmpeg原本是針對linux下的GCC編譯器,當然通過MinGW也可以在win下進行編譯,但是需要安裝額外的編譯環境,你可以上chinavideo上去看看,那上面說的很清楚,的你所說的問題也不是很難,多看看開發文檔就可以解決了。

㈨ ffmpeg錄制視頻,DOS下沒問題,java調用不成功

要注意JAVA下運行和DOS命令行,當中的系統變數是不一定相同的

㈩ java 調用 ffmpeg 進行視頻截取

ffmpeg -y -i SF160114692.flv -vcodec -acodec -ss 00:02:00.000
-t 0:5:30 -f flv 3.flv

(1)用-ss指定開始時間,用hh:mm:ss[.ms]格式,或者換算成用秒計。

(2)用-t指定時間長度,和-ss的格式一樣,用hh:mm:ss[.ms]格式,或者換算成用秒計。

java中可以使用ProcessBuilder調用命令行

閱讀全文

與java調用ffmpeg相關的資料

熱點內容
下班之後的程序員 瀏覽:71
檢測支持ssl加密演算法 瀏覽:342
衢州發布新聞什麼APP 瀏覽:83
中國移動長沙dns伺服器地址 瀏覽:249
wifi密碼加密了怎麼破解嗎 瀏覽:596
linux命令cpu使用率 瀏覽:67
linux實用命令 瀏覽:238
傳奇引擎修改在線時間命令 瀏覽:109
php取域名中間 瀏覽:897
cad命令欄太小 瀏覽:830
php開發環境搭建eclipse 瀏覽:480
qt文件夾名稱大全 瀏覽:212
金山雲伺服器架構 瀏覽:230
安卓系統筆記本怎麼切換系統 瀏覽:618
u盤加密快2個小時還沒有搞完 瀏覽:93
小米有品商家版app叫什麼 瀏覽:94
行命令調用 瀏覽:436
菜鳥裹裹員用什麼app 瀏覽:273
窮查理寶典pdf下載 瀏覽:515
csgo您已被禁用此伺服器怎麼辦 瀏覽:398