`
ihuangweiwei
  • 浏览: 266746 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ffpmeg使用小记

阅读更多

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

    Qt/C++使用小记9【使用UDP创建连接发送消息/传输单个文件】

    asp.net Jmail使用小记

    "Jmail组件使用小记.doc"文件很可能包含了更详尽的使用教程和注意事项,包括如何处理错误、如何调试、如何设置HTML格式的邮件、如何使用模板等功能。阅读这份文档可以帮助你更深入地理解和使用Jmail组件,解决在实际...

    阿里大数据分析平台使用小记

    阿里大数据分析平台使用小记 阿里大数据分析平台是阿里巴巴集团旗下的数据分析平台,提供了大数据处理、存储和分析的能力。该平台主要应用于天池大数据竞赛平台,提供了一些使用经验和教程,但不是完整的开发使用...

    git使用小记-github1

    git使用小记----作者:谭耀武概述本文以FrameworkBenchmarks为例对git的一些操作进行说明fork版地址:https://github.c

    rman使用小记.doc

    《RMAN使用小记》 Recovery Manager(RMAN)是Oracle数据库系统中用于数据恢复和备份的关键工具。本文将详细介绍RMAN的一些核心特性和使用方法,帮助读者理解和掌握RMAN的基本操作。 首先,了解RMAN的三个重要特性...

    Java transient关键字使用小记

    要使用`transient`关键字,只需在不需要序列化的变量前加上`transient`修饰符。例如,在以下`User`类中,`passwd`字段被声明为`transient`: ```java public class User implements Serializable { private ...

    git使用小记1

    Git是分布式版本控制系统,用于跟踪对软件项目中的文件所做的更改。...在实际开发过程中,还需要注意解决可能出现的冲突、管理分支以及使用其他高级Git命令,如rebasing、merging等,以优化协作流程。

    xstream使用小记

    《Xstream使用小记》 Xstream是一款Java库,它提供了简单且强大的方式来序列化和反序列化Java对象到XML,以及从XML回转换为Java对象。在本文中,我们将深入探讨Xstream的核心概念、使用场景以及如何通过实例进行...

    Sublime Text3 安装到使用个人小记

    Sublime Text3 安装到使用个人小记

    fontawesome-iconpicker使用小记

    在Bootstrap项目中,为了增强用户体验并提供更直观的图标选择,我们可以使用`fontawesome-iconpicker`这个插件。`fontawesome-iconpicker`是基于Font Awesome图标库和Bootstrap框架设计的一个组件,它允许用户以图形...

    树形菜单DTree使用小记

    本文将深入探讨“树形菜单DTree”的使用,以及如何通过源码和工具进行操作。由于没有提供具体的描述,我们将根据标题和标签来构建相关知识点。 **一、树形菜单的概念** 树形菜单,顾名思义,是以树状结构展示数据的...

    asp.net Jmail组件使用小记

    关于Jmail的使用介绍网上已经不少,我把自己的体验纪录一下,既帮助跟我一样的初学者也是个积累。 Jmail的使用主要有以下几点: 一. 安装:要在机器上安装Jmail组件,其实就是一个“Jmail.dll”,一般会被安装到C:...

    visjs使用小记

    "visjs使用小记" Vis.js是一个动态的、基于浏览器的可视化库,能够处理大量的动态数据,并能够与这些数据进行交互操作。该库由Almende B.V公司开发,包含DataSet、Timeline和Graph组件。下面是Vis.js的知识点总结:...

    在Solaris上使用优盘小记

    在Solaris上使用优盘小记-Solaris -华夏名网资讯中心 虚拟主机,域名注册,双线虚拟主机,服务器租赁,为7万用户提供服务

    android 的相对布局的使用小记

    然而,需要注意的是,过度使用相对布局可能导致布局文件过于复杂,降低应用性能,因此在设计时应适度使用,并考虑其他布局(如LinearLayout、ConstraintLayout)的配合使用。 在实践中,结合源码阅读和工具的使用,...

    formValidator使用小记

    《formValidator使用小记》 在网页开发中,表单验证是不可或缺的一部分,它能确保用户输入的数据符合我们的预期,防止无效数据的提交,提高用户体验并保护服务器安全。本文将详细探讨一个常用的JavaScript表单验证...

    Html5踩坑记之mandMobile使用小记

    Mand Mobile使用小记 mandMobile是滴滴开源的专门面向金融场景的Vue移动端UI组件库(非金融类也可以用),最近我司正在孵化一个金融类产品,本人准备使用。 对初次使用者来说,按照官方文档 来,多少会踩一些坑或者...

    Linux boost库安装、编译问题小记

    环境: Linux s12084 2.6.9-67.ELsmp #1 SMP Wed ...小记一下。以备以后参考。  boost 库做得真好。在windows 平台, linux 平台下编译都很顺利。hp aCC 也宣称对 boost 1.35 完全支持 。  全部编译是很痛苦的过程

    vuex使用方法,小记总结

    Vuex 使用方法总结 Vuex 是一个专门为 Vue.js 设计的状态管理器,用于管理应用程序的状态。下面是 Vuex 的使用方法总结: State Vuex 的状态管理是通过 State 来实现的。State 是一个对象,存储了应用程序的所有...

Global site tag (gtag.js) - Google Analytics