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) {
			}
		}
	}

 

你可能感兴趣的:(ffmpeg)