1. 程式人生 > >java利用ffmpeg把圖片轉成yuv格式

java利用ffmpeg把圖片轉成yuv格式

exceptio ioe ever readline filepath uid ont ati cep

安裝ffmpeg

安裝目錄:/usr/share/ffmpeg

創建ffmpeg目錄,解壓ffmpeg-3.4.1.tar.bz2

tar -xjvf ffmpeg-3.4.1.tar.bz2

下載yasm-1.3.0.tar.gz 解壓

tar -xvzf yasm-1.3.0.tar.gz

cd yasm-1.3.0/

./configure

make

make install

編譯參數都是默認的,直接安裝到系統中即可,安裝成功之後繼續回到ffmpeg解壓後的目錄,執行下面命令編譯並安裝:

./configure --enable-shared --prefix=/usr/share/ffmpeg/ffmpeg

make

make install

執行命令: vim /etc/ld.so.conf.d/ffmpeg.conf 然後添加一行內容: /usr/share/ffmpeg/ffmpeg/lib 之後保存並退出,然後執行 ldconfig 使配置生效,執行 ./ffmpeg -version 顯示就正常了。

Java代碼:

public class Image2YuvUtils {

public static void exec(String filePath,String fileName,int imgWidth,int imgHeight,String targetPath) {
String name=getYuvName(fileName);

List<String> commend = new ArrayList<String>();
commend.add("/usr/share/ffmpeg/ffmpeg/bin/./ffmpeg");
commend.add("-i");
commend.add(filePath);
commend.add(" -s ");
commend.add(imgWidth+"x"+imgHeight);
commend.add(" -pix_fmt yuv420p ");
commend.add(targetPath+"/"+name+".yuv");
StringBuffer test=new StringBuffer();
for(int i=0;i<commend.size();i++)
test.append(commend.get(i)+" ");
Log.debug("test----"+test.toString());
try {
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec(test.toString());
InputStream stderr = proc.getErrorStream();
InputStreamReader isr = new InputStreamReader(stderr);
BufferedReader br = new BufferedReader(isr);
String line = null;
while ( (line = br.readLine()) != null);
} catch (IOException e) {
Log.error(e.getMessage(),e);
}
Log.debug("轉換成功");
}

public static String getYuvName(String fileName){
if(null==fileName||fileName.length()==0){
UUID uuid = UUID.randomUUID();
return uuid.toString();
}else{
StringBuilder sb = new StringBuilder(fileName).reverse();
return new StringBuilder(sb.substring(sb.indexOf(".")+1,sb.length())).reverse().toString();
}
}
}

java利用ffmpeg把圖片轉成yuv格式