ffmpeg 分辨率 压缩_ffmpeg 视频压缩
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 视频压缩相关推荐
- ffmpeg 分辨率 压缩_Ffmpeg 视频压缩的几个关键参数
视频压缩用到的参数主要为以下几个: 文件路径:-i 输入文件的路径 码率:-b:v 输出文件的码率 分辨率:-s 输出文件的分辨率: 帧率:-r 输出文件的帧率值 码率 码率,即波特率.值越小,转换后 ...
- ffmpeg 分辨率 压缩_用GPU加速FFmpeg中的超分辨率功能
1. 简要回顾 首先简单复述一下FFmpeg中对深度学习的支持情况,如上图所示,FFmpeg在libavfilter中支持基于深度学习的filter,目前已经支持sr, derain和dnn_proc ...
- ffmpeg 分辨率 压缩_视频怎么在尽量不损害画质的前提下压缩?
其实和视频画质和效果相关的参数主要是分辨率和码率以及帧率.帧率直接和画面的流畅度相关,分辨率和码率参数和画质直接相关. 帧率:指的的视频每秒钟播放的图片数目,帧率越小,那么你看到的视频就会越卡,动作就 ...
- ffmpeg 声音参数_ffmpeg转换参数和压缩输出大小的比率
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 ffmpeg 转换压缩比例 FFMPEG如果是压缩为FLV文件 3个编码可选 1. -c:v flv 标准FLV编码 这个好处是速度快 清晰度高的话 视频 ...
- java实现图片分辨率压缩、图片软化、jpg质量压缩
最近遇见个需求,需要压缩图片,但是很多涉及到的方法类,要么对jdk依赖比较大,要么对系统的配置有要求,经过几天的研究和测试,终于整了一个还算比较全的方案. 代码 注解1:关于根据url读取图片的方法有 ...
- 如何将视频进行压缩?视频压缩选择什么工具好?
众所周知,比起图片,视频所占据的内存大很多,当一个视频的清晰度越高.时长越长.尺寸越大.那么所占据的内存也就会越大,无论是保存还是传输,都不是很方便,那么,如何将视频进行压缩呢?视频压缩使用什么软件最 ...
- 视频太大怎么压缩,视频压缩教程
视频太大怎么压缩,视频压缩教程!什么样的视频需要压缩呢?当你所有使用的视频文件出现传输速度慢,被平台限制上传或者你发现所保存的视频文件导致自己的设备变慢,占用了大量内存的时候,都需要我们将视频文件压缩 ...
- ffmpeg 声音参数_ffmpeg之参数详解
本文讲述参数详解 1. ffmpeg.exe -i F:\ 闪 客 之 家 \ 闪 客 之 歌 .mp3 -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:\11. ...
- ffmpeg php 抠像_FFMPEG批量绿幕抠像BAT脚本实现
平时拍抖音短视频和西瓜长视频需要用到绿幕抠像,除了PR和AE有没有批量抠像的简便方法?有的!用FFMPEG就可以! FFmpeg是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用LGPL或GP ...
- ffmpeg webm 提取_ffmpeg简单使用教程 转码、压制、提取、截取、合并、录屏等
1.查看帮助文档 ffmpeg是一个开源的音视频转码工具 本文是自己学习ffmpeg使用方式的一个笔记 将ffmpeg命令行工具加入环境变量之后,输入ffmpeg -h打印帮助文档 PS C:\Use ...
最新文章
- web项目答辩总结_web实战项目遇到问题总结探索
- 代码块练习题:看代码写程序的执行结果。
- 网和aoe网的区别_欧哲门窗的金刚网和其他品牌的有什么区别?
- epoll使用详解(精髓)
- HTML基础(part7)--常用标签之超链接标签
- C# 彻底搞懂async/await
- 获取iOS任意线程调用堆栈(二)符号化理论:Mach-o文件结构
- APP界面的数据可视化设计临摹学习模板
- sql还原数据库备份数据库_有关数据库备份,还原和恢复SQL面试问题–第一部分
- GitLab CI/CD conda: command not found
- hibernate 之HQL查询实例
- matlab知识集锦
- Disable UTC in Ubuntu
- 专访飞康新任CEO:云时代下,我们更懂数据保护
- java filter param_Java过滤器Filter使用详解
- 究竟什么是嵌入式? 嵌入式开发是什么意思?
- 打游戏计算机内存不足,玩游戏老提示内存不足怎么办
- FineBI 的关联视图及多表关联 自助数据集
- Modbus CRC计算器(编译环境:C-Free 5.0)
- Model、Map、ModelMap的关系
热门文章
- Julia:和Julia相关的经济学网站 和初学者网站
- 从数据治理、数据资产管理,到数据中台的落地实战!
- 基于ZStack构建深度学习云平台
- C语言函数传入字母参数,c语言详细讲解函数参数作为数组传递的几种方式
- 【心电信号】基于matlab心电图峰值检测【含Matlab源码 1548期】
- 【优化算法】多目标水循环算法(MOWCA)【含Matlab源码 1433期】
- 【路径规划】基于matlab A_star算法机器人动态避障路径规划【含Matlab源码 1033期】
- 【人脸识别】基于matlab GUI PCA人脸识别【含Matlab源码 748期】
- iconfont 图标宽高出问题_IconFont使用注意点
- git 怎么读_20 分钟教你搞懂 Git!