1.ffmpeg安装

首先下载ffmpeg我使用的是2.0.1版本。

wget http://ffmpeg.org/releases/ffmpeg-2.0.1.tar.g

下载后解压,解压后使用命令:

./configure --enable-shared  --disable-yasm  --prefix=/usr/local/ffmpeg

(注意:因为ffmpeg中为了提高效率用到了汇编指令,比如MMX和SSE,所以需要yasm汇编编译器,我这里禁止了汇编使用)

其中:--enable-shared 是允许其编译产生动态库,在以后的编程中要用到这个几个动态库。--prefix设置的安装目录

运行

make && make install

完成安装。

2.配置ffmpeg环境:

vi /etc/profile

添加

export FFMPEG_HOME=/usr/local/ffmpeg

export PATH=$FFMPEG_HOME/bin:$PATH

vi /etc/ld.so.conf

在末尾加上一句话:/usr/local/ffmpeg/lib

执行命令使修改生效

ldconfig -v

修改/usr/local/ffmpeg/lib目录下的文件权限为777:

3.压缩视频命令:

ffmpeg -i index.mp4 -b 800k -s 320x200 -strict -2 final.mp4

-i后边为要压缩的视频

-n后边为压缩码率

-s为分辨率

最后为视频的输出名字

4.java 代码调用ffmpeg获取图片

// 视频缩略图截取

// inFile

输入文件(包括完整路径)

// outFile

输出文件(可包括完整路径)

public static

boolean transfer(String inFile, String outFile)

{

String command =

"ffmpeg -i " + inFile + " -y -f image2 -ss 00:00:10 -t 00:00:01 -s

176x144 " + outFile;

try

{

Runtime rt =

Runtime.getRuntime();

Process proc =

rt.exec(command);

InputStream

stderr =

proc.getErrorStream();

InputStreamReader isr = new

InputStreamReader(stderr);

BufferedReader

br = new

BufferedReader(isr);

String line =

null;

while ((line =

br.readLine()) != null)

System.out.println(line);

} catch (Throwable

t) {

t.printStackTrace();

return

false;

}

return

true;

}

更加丰富的java操作

import java.io.*;

import java.lang.*;

import java.util.*;

import java.text.*;

import java.net.*;

public class MediocreExecJavac

{

//运行命令

public void runCmd(String command){

try

{

Runtime rt = Runtime.getRuntime();

Process proc = rt.exec(command);

InputStream stderr = proc.getErrorStream();

InputStreamReader isr = new InputStreamReader(stderr);

BufferedReader br = new BufferedReader(isr);

String line = null;

System.out.println("");

while ( (line = br.readLine()) != null)

System.out.println(line);

System.out.println("");

int exitVal = proc.waitFor();

System.out.println("Process exitValue: " + exitVal);

} catch (Throwable t)

{

t.printStackTrace();

}

}

//视频转码,infile输入文件(包括完整路径),outfile输出文件

public boolean transfer(String infile,String outfile){

String avitoflv = "ffmpeg -i "+infile+" -ar 22050 -ab 56 -f flv -y -s 320x240 "+outfile;

String

flvto3gp = "ffmpeg -i " + infile + " -ar 8000 -ac 1 -acodec amr_nb

-vcodec h263 -s 176x144 -r 12 -b 30 -ab 12 " + outfile;

String

avito3gp = "ffmpeg -i " + infile + " -ar 8000 -ac 1 -acodec amr_nb

-vcodec h263 -s 176x144 -r 12 -b 30 -ab 12 " + outfile;

//avi -> jpg

String avitojpg = "ffmpeg -i " + infile + " -y -f image2 -ss 00:00:10 -t 00:00:01 -s 350x240 " + outfile;

try

{

Runtime rt = Runtime.getRuntime();

Process proc = rt.exec(avitoflv);

InputStream stderr = proc.getErrorStream();

InputStreamReader isr = new InputStreamReader(stderr);

BufferedReader br = new BufferedReader(isr);

String line = null;

System.out.println("");

while ( (line = br.readLine()) != null)

System.out.println(line);

System.out.println("");

int exitVal = proc.waitFor();

System.out.println("Process exitValue: " + exitVal);

} catch (Throwable t)

{

t.printStackTrace();

return false;

}

return true;

}

//读取文件,fileName输入文件,id行数

public static String readFile(String fileName,int id)

{

String dataStr = "";

FileInputStream fis = null;

try

{

FileReader file = new FileReader(fileName);//建立FileReader对象,并实例化为fr

BufferedReader br=new BufferedReader(file);//建立BufferedReader对象,并实例化为br

int i=1;

String Line=br.readLine();//从文件读取一行字符串

//System.out.println("Line1="+Line+"="+Line);

//判断读取到的字符串是否不为空

//while(Line!=null){

//System.out.println(Line + "
");//输出从文件中读取的数据

//if(i==line){dataStr=Line;break;}else{i=i+1;}

//Line=br.readLine();//从文件中继续读取一行数据

//}

dataStr=Line;

br.close();//关闭BufferedReader对象

}

catch(Exception e){

}finally{

try

{

if(fis!=null)

fis.close();

}catch(Exception e){}

}

return dataStr;

}

//读时长信息

public String readtime(String file)

{

String str="/opt/cgogo/test/info.txt";

String timelen = "";

String cmd = "timelen "+file;

runCmd(cmd);

timelen=readFile(str,1);

return timelen;

}

public static void main(String args[])

{

MediocreExecJavac me = new MediocreExecJavac();

String infile = "/opt/cgogo/test/02.avi";

String outfile = "01.flv";

//时长

String timelen = me.readtime(infile);

System.out.println("02.avi timelen is :" + timelen);

//转码

if(me.transfer(infile,outfile)){

System.out.println("the transfer is ok!");

}else{

System.out.println("the transfer is error!");

}

}

}

初次使用,如有错误请指教!

ffmpeg 分辨率 压缩_ffmpeg 视频压缩相关推荐

  1. ffmpeg 分辨率 压缩_Ffmpeg 视频压缩的几个关键参数

    视频压缩用到的参数主要为以下几个: 文件路径:-i 输入文件的路径 码率:-b:v 输出文件的码率 分辨率:-s 输出文件的分辨率: 帧率:-r 输出文件的帧率值 码率 码率,即波特率.值越小,转换后 ...

  2. ffmpeg 分辨率 压缩_用GPU加速FFmpeg中的超分辨率功能

    1. 简要回顾 首先简单复述一下FFmpeg中对深度学习的支持情况,如上图所示,FFmpeg在libavfilter中支持基于深度学习的filter,目前已经支持sr, derain和dnn_proc ...

  3. ffmpeg 分辨率 压缩_视频怎么在尽量不损害画质的前提下压缩?

    其实和视频画质和效果相关的参数主要是分辨率和码率以及帧率.帧率直接和画面的流畅度相关,分辨率和码率参数和画质直接相关. 帧率:指的的视频每秒钟播放的图片数目,帧率越小,那么你看到的视频就会越卡,动作就 ...

  4. ffmpeg 声音参数_ffmpeg转换参数和压缩输出大小的比率

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 ffmpeg 转换压缩比例 FFMPEG如果是压缩为FLV文件 3个编码可选 1. -c:v flv 标准FLV编码 这个好处是速度快 清晰度高的话 视频 ...

  5. java实现图片分辨率压缩、图片软化、jpg质量压缩

    最近遇见个需求,需要压缩图片,但是很多涉及到的方法类,要么对jdk依赖比较大,要么对系统的配置有要求,经过几天的研究和测试,终于整了一个还算比较全的方案. 代码 注解1:关于根据url读取图片的方法有 ...

  6. 如何将视频进行压缩?视频压缩选择什么工具好?

    众所周知,比起图片,视频所占据的内存大很多,当一个视频的清晰度越高.时长越长.尺寸越大.那么所占据的内存也就会越大,无论是保存还是传输,都不是很方便,那么,如何将视频进行压缩呢?视频压缩使用什么软件最 ...

  7. 视频太大怎么压缩,视频压缩教程

    视频太大怎么压缩,视频压缩教程!什么样的视频需要压缩呢?当你所有使用的视频文件出现传输速度慢,被平台限制上传或者你发现所保存的视频文件导致自己的设备变慢,占用了大量内存的时候,都需要我们将视频文件压缩 ...

  8. ffmpeg 声音参数_ffmpeg之参数详解

    本文讲述参数详解 1. ffmpeg.exe -i F:\ 闪 客 之 家 \ 闪 客 之 歌 .mp3 -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:\11. ...

  9. ffmpeg php 抠像_FFMPEG批量绿幕抠像BAT脚本实现

    平时拍抖音短视频和西瓜长视频需要用到绿幕抠像,除了PR和AE有没有批量抠像的简便方法?有的!用FFMPEG就可以! FFmpeg是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用LGPL或GP ...

  10. ffmpeg webm 提取_ffmpeg简单使用教程 转码、压制、提取、截取、合并、录屏等

    1.查看帮助文档 ffmpeg是一个开源的音视频转码工具 本文是自己学习ffmpeg使用方式的一个笔记 将ffmpeg命令行工具加入环境变量之后,输入ffmpeg -h打印帮助文档 PS C:\Use ...

最新文章

  1. web项目答辩总结_web实战项目遇到问题总结探索
  2. 代码块练习题:看代码写程序的执行结果。
  3. 网和aoe网的区别_欧哲门窗的金刚网和其他品牌的有什么区别?
  4. epoll使用详解(精髓)
  5. HTML基础(part7)--常用标签之超链接标签
  6. C# 彻底搞懂async/await
  7. 获取iOS任意线程调用堆栈(二)符号化理论:Mach-o文件结构
  8. APP界面的数据可视化设计临摹学习模板
  9. sql还原数据库备份数据库_有关数据库备份,还原和恢复SQL面试问题–第一部分
  10. GitLab CI/CD conda: command not found
  11. hibernate 之HQL查询实例
  12. matlab知识集锦
  13. Disable UTC in Ubuntu
  14. 专访飞康新任CEO:云时代下,我们更懂数据保护
  15. java filter param_Java过滤器Filter使用详解
  16. 究竟什么是嵌入式? 嵌入式开发是什么意思?
  17. 打游戏计算机内存不足,玩游戏老提示内存不足怎么办
  18. FineBI 的关联视图及多表关联 自助数据集
  19. Modbus CRC计算器(编译环境:C-Free 5.0)
  20. Model、Map、ModelMap的关系

热门文章

  1. Julia:和Julia相关的经济学网站 和初学者网站
  2. 从数据治理、数据资产管理,到数据中台的落地实战!
  3. 基于ZStack构建深度学习云平台
  4. C语言函数传入字母参数,c语言详细讲解函数参数作为数组传递的几种方式
  5. 【心电信号】基于matlab心电图峰值检测【含Matlab源码 1548期】
  6. 【优化算法】多目标水循环算法(MOWCA)【含Matlab源码 1433期】
  7. 【路径规划】基于matlab A_star算法机器人动态避障路径规划【含Matlab源码 1033期】
  8. 【人脸识别】基于matlab GUI PCA人脸识别【含Matlab源码 748期】
  9. iconfont 图标宽高出问题_IconFont使用注意点
  10. git 怎么读_20 分钟教你搞懂 Git!