Ubuntu下自动化安装ffmpeg
sudo apt-get install libavcodec-extra-52
sudo apt-get install ffmpeg
ffmpeg常用命令
命令参考网址
1.简单命令
ffmpeg -i test.mp3 -ab 64k -acodec libmp3lame out.mp3
ffmpeg -loglevel quiet -i 1.mp3 -ab 24k -ar 22050 -acodec libmp3lame 132out.mp3
注:这条命令可以解决java调用的时候线程死锁问题,但使用该命令跟ffmpeg版本有关
同时在高码率转低码率转不下的时候,可以设置歌曲的频率
如果上述命令不能运行可以尝试一下命令
ffmpeg -i 1.mp3 -ab 24k -ar 22050 -acodec libmp3lame 13d2out.mp3 >/dev/null
ffmpeg -i 1.mp3 -ab 24k -ar 22050 -acodec libmp3lame 13d2out.mp3 >/dev/null 2>&1
Windows环境下的调用
public void run() {
Runtime rt = Runtime.getRuntime();
Process p = null;
try {
p = rt.exec("cmd /c ffmpeg -loglevel quiet -i 12.mp3 -ab 24k -ar 22050 -acodec libmp3lame out.mp3", null, new File("C:\\ffmpeg-git-670229e-win32-static\\bin"));
// 获取进城的错误流
final InputStream is1 = p.getErrorStream();
// 获取进城的标准输入流
final InputStream is2 = p.getInputStream();
// 启动两个线程,一个线程负责读标准输出流,另一个负责读标准错误流
new Thread() {
public void run() {
BufferedReader br1 = new BufferedReader(
new InputStreamReader(is1));
try {
String line1 = null;
while ((line1 = br1.readLine()) != null) {
if (line1 != null) {
}
}
} catch (IOException e) {
try {
is1.close();
} catch (IOException e1) {
}
} finally {
try {
is1.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}.start();
new Thread() {
public void run() {
BufferedReader br2 = new BufferedReader(
new InputStreamReader(is2));
try {
String line2 = null;
while ((line2 = br2.readLine()) != null) {
if (line2 != null) {
}
}
} catch (IOException e) {
try {
is2.close();
} catch (IOException e1) {
}
} finally {
try {
is2.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}.start();
int i = p.waitFor();// 返回0则表示正常执行完成
p.destroy();
} catch (Exception e) {
e.printStackTrace();
try {
p.getErrorStream().close();
p.getInputStream().close();
p.getOutputStream().close();
} catch (Exception ee) {
}
}
}
linux环境下的调用
public void run() {
Runtime rt = Runtime.getRuntime();
Process p = null;
try {
p = rt.exec("ffmpeg -loglevel quiet -i 12.mp3 -ab 24k -ar 22050 -acodec libmp3lame out.mp3");
// 获取进城的错误流
final InputStream is1 = p.getErrorStream();
// 获取进城的标准输入流
final InputStream is2 = p.getInputStream();
// 启动两个线程,一个线程负责读标准输出流,另一个负责读标准错误流
new Thread() {
public void run() {
BufferedReader br1 = new BufferedReader(
new InputStreamReader(is1));
try {
String line1 = null;
while ((line1 = br1.readLine()) != null) {
if (line1 != null) {
}
}
} catch (IOException e) {
try {
is1.close();
} catch (IOException e1) {
}
} finally {
try {
is1.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}.start();
new Thread() {
public void run() {
BufferedReader br2 = new BufferedReader(
new InputStreamReader(is2));
try {
String line2 = null;
while ((line2 = br2.readLine()) != null) {
if (line2 != null) {
}
}
} catch (IOException e) {
try {
is2.close();
} catch (IOException e1) {
}
} finally {
try {
is2.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}.start();
int i = p.waitFor();
p.destroy();
} catch (Exception e) {
e.printStackTrace();
try {
p.getErrorStream().close();
p.getInputStream().close();
p.getOutputStream().close();
} catch (Exception ee) {
}
}
}
分享到:
相关推荐
Qt/C++使用小记9【使用UDP创建连接发送消息/传输单个文件】
"Jmail组件使用小记.doc"文件很可能包含了更详尽的使用教程和注意事项,包括如何处理错误、如何调试、如何设置HTML格式的邮件、如何使用模板等功能。阅读这份文档可以帮助你更深入地理解和使用Jmail组件,解决在实际...
阿里大数据分析平台使用小记 阿里大数据分析平台是阿里巴巴集团旗下的数据分析平台,提供了大数据处理、存储和分析的能力。该平台主要应用于天池大数据竞赛平台,提供了一些使用经验和教程,但不是完整的开发使用...
git使用小记----作者:谭耀武概述本文以FrameworkBenchmarks为例对git的一些操作进行说明fork版地址:https://github.c
要使用`transient`关键字,只需在不需要序列化的变量前加上`transient`修饰符。例如,在以下`User`类中,`passwd`字段被声明为`transient`: ```java public class User implements Serializable { private ...
Git是分布式版本控制系统,用于跟踪对软件项目中的文件所做的更改。...在实际开发过程中,还需要注意解决可能出现的冲突、管理分支以及使用其他高级Git命令,如rebasing、merging等,以优化协作流程。
《Xstream使用小记》 Xstream是一款Java库,它提供了简单且强大的方式来序列化和反序列化Java对象到XML,以及从XML回转换为Java对象。在本文中,我们将深入探讨Xstream的核心概念、使用场景以及如何通过实例进行...
Sublime Text3 安装到使用个人小记
在Bootstrap项目中,为了增强用户体验并提供更直观的图标选择,我们可以使用`fontawesome-iconpicker`这个插件。`fontawesome-iconpicker`是基于Font Awesome图标库和Bootstrap框架设计的一个组件,它允许用户以图形...
本文将深入探讨“树形菜单DTree”的使用,以及如何通过源码和工具进行操作。由于没有提供具体的描述,我们将根据标题和标签来构建相关知识点。 **一、树形菜单的概念** 树形菜单,顾名思义,是以树状结构展示数据的...
关于Jmail的使用介绍网上已经不少,我把自己的体验纪录一下,既帮助跟我一样的初学者也是个积累。 Jmail的使用主要有以下几点: 一. 安装:要在机器上安装Jmail组件,其实就是一个“Jmail.dll”,一般会被安装到C:...
"visjs使用小记" Vis.js是一个动态的、基于浏览器的可视化库,能够处理大量的动态数据,并能够与这些数据进行交互操作。该库由Almende B.V公司开发,包含DataSet、Timeline和Graph组件。下面是Vis.js的知识点总结:...
在Solaris上使用优盘小记-Solaris -华夏名网资讯中心 虚拟主机,域名注册,双线虚拟主机,服务器租赁,为7万用户提供服务
然而,需要注意的是,过度使用相对布局可能导致布局文件过于复杂,降低应用性能,因此在设计时应适度使用,并考虑其他布局(如LinearLayout、ConstraintLayout)的配合使用。 在实践中,结合源码阅读和工具的使用,...
《formValidator使用小记》 在网页开发中,表单验证是不可或缺的一部分,它能确保用户输入的数据符合我们的预期,防止无效数据的提交,提高用户体验并保护服务器安全。本文将详细探讨一个常用的JavaScript表单验证...
Mand Mobile使用小记 mandMobile是滴滴开源的专门面向金融场景的Vue移动端UI组件库(非金融类也可以用),最近我司正在孵化一个金融类产品,本人准备使用。 对初次使用者来说,按照官方文档 来,多少会踩一些坑或者...
这篇文章《咬人草小记》便是对这种植物的描述,以及作者与它亲密接触后的体验与思考。 文章的开始,是一段友人的警告:“这草,你可不能碰!”正是这句话,将作者的注意力引向了这种奇特的生物。咬人草的外表并...
环境: Linux s12084 2.6.9-67.ELsmp #1 SMP Wed ...小记一下。以备以后参考。 boost 库做得真好。在windows 平台, linux 平台下编译都很顺利。hp aCC 也宣称对 boost 1.35 完全支持 。 全部编译是很痛苦的过程